今天见到了一些问题,现在列出来。
例:
#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 = 3;
其实这里有逗号运算符的优先级小于等号的问题。
z = x++, y++, ++y;等价于 (z = x++),y++,++y.
z = 1,x = 2,y = 3.