学习小结

xiaoxiao2021-02-28  86

今天见到了一些问题,现在列出来。

例:

#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.

转载请注明原文地址: https://www.6miu.com/read-84893.html

最新回复(0)