今天见到了一些问题,现在列出来。
例:
#include <stdio.h>
int main()
{
int i = 3;
int j = ++i + ++i + ++i;
printf("%d\n", j);
return 0;
}
此题重点在 int j = ++i + ++i + ++i;
计算时先计算自加运算符,第一个++i = 4,第二个++i = 5。此时i= 5.再回头计算得原式应为:j = 5 + 5 + ++5,
最后结果为16.
例:
#include <stdio.h>
int main()
{
int x, y, z;
x = 1;
y = 1;
z = x++, y++, ++y;
printf("x = %d y = %d z = %d\n", x, y, z);
return 0;
}
其实这里有逗号运算符的优先级小于等号的问题。
z = x++, y++, ++y;等价于 (z = x++),y++,++y.
z = 1,x = 2,y = 3.