圣子华炼 发表于 2014-7-15 16:48:15

关于运算符优先的问题

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

牡丹花下死做鬼 发表于 2014-7-15 16:48:16

vicdd 发表于 2014-7-16 10:45
注意++b与b++的区别!

光这个不够的哦
这个不同编译器编译出来的结果也可能会不同的

牡丹花下死做鬼 发表于 2014-7-15 16:54:34

论坛搜索自增
N多大神有过详细解答了

流行语 发表于 2014-7-15 17:44:17

我感觉研究这个没有什么意义,在真正的开发中,你完全没有必要这么做。你还不如研究点更有价值的。

qllqll 发表于 2014-7-15 18:25:48

:sweat:这个去百度吧,百度上很多

qllqll 发表于 2014-7-15 18:48:12

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

vicdd 发表于 2014-7-16 10:45:41

注意++b与b++的区别!

牡丹花下死做鬼 发表于 2014-7-16 12:28:10

不知道你搜索了没有
其实这个纠结完全没必要
你以后也千万不要这么写
应为这个不同编译器得到的结果也会不同
就把自增自减写出一个独立的语句就好
如i++; 这样 i++; ==++i;
页: [1]
查看完整版本: 关于运算符优先的问题