关于运算符优先的问题
#include <stdio.h>void main ()
{
int a,b,c,d;
a=5;
b=5;
c=(a++)+(a++)+(a++);
d=(++b)+(++b)+(++b);
printf("%d,%d\n,%d,%d\n",a,b,c,d);
}
按照这个代码,可以说说,为什么c=15,d=22,按我的理解,不应该是5+6+7=18吗。。。d不应该是6+7+8=21吗
vicdd 发表于 2014-7-16 10:45
注意++b与b++的区别!
光这个不够的哦
这个不同编译器编译出来的结果也可能会不同的 论坛搜索自增
N多大神有过详细解答了 我感觉研究这个没有什么意义,在真正的开发中,你完全没有必要这么做。你还不如研究点更有价值的。 :sweat:这个去百度吧,百度上很多 a++是先运算然后再自加1,所以c=15;运算完后a=8了;
运算的顺序是从左到右:
第一次:++b —— b = 6
第二次:++b —— b = 7
++b + ++b —— result = 7 + 7 = 14
第三次:++b —— b = 8
14+ ++b —— result = 22 注意++b与b++的区别! 不知道你搜索了没有
其实这个纠结完全没必要
你以后也千万不要这么写
应为这个不同编译器得到的结果也会不同
就把自增自减写出一个独立的语句就好
如i++; 这样 i++; ==++i;
页:
[1]