c - 以下代码输出背后的逻辑是什么?

标签 c

我执行了以下代码:

int a[] = {5,1,15,20,25};
int i,j,m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d",i,j,m);

我得到如下输出:-

3 2 15

我不明白的部分是我如何将 i 的值设为 3

应该是2吧?

或者它是否与 C 编译器对 printf() 语句的从右到左求值有关?

最佳答案

m = a[i++] 行第二次将 i 从 2 增加到 3。

关于c - 以下代码输出背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344898/

相关文章:

C - 系统调用 - 读/写结构中的错误

c - arm7tdmi汇编讲解+崩溃调试

c - LUA 在没有的地方显示错误

百分比概率可以用 C 中的开关和范围来完成吗?

c - 函数隐式声明 'execle' 错误

c - 如何编写通用函数对 C 中的字符串数组进行排序?

c - 是否可以将 ICMP 协议(protocol)与 Azure Sphere 开发工具包一起使用?

c - 两个补码编码负值

c - Windows 互斥体 WAIT_OBJECT_0 和 WAIT_ABANDONED

c - 字节数组有问题/捕获屏幕截图