学习小结

来源:互联网 发布:算法设计与分 考题 编辑:程序博客网 时间:2024/05/18 13:23

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

例:

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

0 0
原创粉丝点击