小编mil*_*des的帖子

使用增量运算符时的不同结果(arr[i++] vs arr[i]; i++;)

我不明白为什么下面的代码没有按预期工作:

#include <stdio.h>

int main() {
    int i = 0, size = 9, oneOrZero[] = {1,1,1,1,1,1,1,1,0};
    while (i < size && oneOrZero[i++]);
    if (i == size) printf("All ones"); else printf("Has a zero");
}
Run Code Online (Sandbox Code Playgroud)
Terminal: All ones.
Run Code Online (Sandbox Code Playgroud)

当增加循环内的索引时,代码按预期运行:

#include <stdio.h>

int main() {
    int i = 0, size = 9, oneOrZero[] = {1,1,1,1,1,1,1,1,0};
    while (i < size && oneOrZero[i]) {i++;}
    if (i == size) printf("All ones"); else printf("Has a zero");
}
Run Code Online (Sandbox Code Playgroud)
Terminal: Has a zero.
Run Code Online (Sandbox Code Playgroud)

有人可以解释这两者之间的区别吗?

c increment postfix-operator

13
推荐指数
2
解决办法
242
查看次数

标签 统计

c ×1

increment ×1

postfix-operator ×1