【发布时间】:2015-02-18 05:59:13
【问题描述】:
#include<stdio.h>
int main()
{
int a[5] = {5, 1, 15, 20, 25};
int x, y, z;
x = ++a[1];
y = a[1]++;
z = a[x++];
printf("%d, %d, %d", x, y, z);
return 0;
}
"x" 打印为 3,但我希望它返回 2?事实上,如果我删除“++”并设置 x 等于 a[1],它会返回 2。它会将 1 加到实际存在的任何值上。我错过了什么吗?
【问题讨论】:
-
阅读一本关于 C 编程的好书。关注sequence points
-
@BasileStarynkevitch:与序列点没有任何关系:这里的所有内容都已正确排序。