c - C 中评估后递增变量

标签 c

代码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/

相关文章:

c++ - 有没有办法为 RIOT OS 添加新的语言支持(例如 D)?

c - 求 BST 的最大值和最小值

c - fgets() 如何跟踪它在哪一行?

c++ - C/C++ 无法在 for 循环中运行 for 循环

c - 如何在使用C的结构中获得 union

c - C 中的函数处理数组

c - 关于c程序的调试

c - 尝试使用 fread 读取字节但出现 Segmentation Fault 11

C、多维数组: array whose elements are one-dimensional arrays?

c - 检测 objective-c PU 上的对齐内存要求