【问题标题】:C - while operator in for loop initializer [closed]C-for循环初始化程序中的while运算符[关闭]
【发布时间】:2016-07-11 02:38:10
【问题描述】:

为什么我不能这样写?

int i, size;
int *arr;
...
for(i = size - 1, while(arr[i] == 0) i--; i >= 0; i--) { ... }

【问题讨论】:

  • 出于同样的原因,你不能写很多东西——它不是有效的 C 语法。
  • 简短回答 - 因为语言语法不允许这样做; for 语句中的控制表达式不能是其他语句。至于为什么语法是这样的,你得问问 Dennis Ritchie,他已经不在了。
  • 因为该语言只允许 表达式 而不允许语句。
  • 阅读for循环语法。 for ( expression; expression; expression ) statement.

标签: c for-loop while-loop comma-operator


【解决方案1】:

这只是 C 中的无效语法。

您想要的解决方案可能是:

int i, size;
int *arr;
...
for(i = size - 1; i >= 0; i--) {
    if (arr[i] == 0)
        continue;
    ...
}

【讨论】: