代码1:
i = 0;
while ( arr[i++] != EOF )
printf("%d", i);
输出:1 2 3 4
代码2:
i = 0;
while ( arr[i] != EOF )
{
printf("%d", i);
i++;
}
输出:0 1 2 3
在上面的代码中,arr[] = "//\n\0"
但是,我认为 i++ 应该首先分配 i 并递增,对吗?
即,
if i = 1
j = i++
j = 1 (Not 2)
那么,代码 1 中究竟发生了什么以及为什么它的行为与代码 2 不同?
最佳答案
当你执行这个arr[i++]
时,你增加了i
,所以当你打印它时它当然已经增加了。
而是打印出数组元素,这样你就知道你得到了正确的元素:
i = 0;
char c;
while ( (c = arr[i++]) != EOF )
printf("%c", c);
关于c - C 中评估后递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996170/