黑马程序员技术交流社区

标题: C语言(++b)+(++b)+(++b))这个有点晕啊 [打印本页]

作者: zhou_xingyu    时间: 2015-8-5 09:38
标题: C语言(++b)+(++b)+(++b))这个有点晕啊
int b=3;
printf("%d\n",(++b)+(++b)+(++b));
结果等于16
求解析...
作者: flywithde    时间: 2015-8-5 09:42
应该等于15吧
作者: paradise6    时间: 2015-8-5 09:51
4+5+6  应该是15吧
作者: wowthe1st    时间: 2015-8-5 11:56
话说我也以为是15,运行下还真等于16,等我研究下
作者: zhou_xingyu    时间: 2015-8-5 12:01
wowthe1st 发表于 2015-8-5 11:56
话说我也以为是15,运行下还真等于16,等我研究下

哈哈 是吧
作者: zhou_xingyu    时间: 2015-8-5 12:02
flywithde 发表于 2015-8-5 09:42
应该等于15吧

运行是16  答案也是16
作者: zhou_xingyu    时间: 2015-8-5 12:04
flywithde 发表于 2015-8-5 09:42
应该等于15吧

运行是16.。答案也是16
作者: DUKEMAN    时间: 2015-8-5 12:11
呃 不是吧,我咋觉得也是15呢
作者: wowthe1st    时间: 2015-8-5 12:12
大概明白了
因为运算时是从左往右,一个一个运算符来的,++b是吧b+1然后使用b本身,
也就是内存中是这样的,
比如b存放在位置 f0,这时值是3,
从左到右运算,第一个+号两边的值先运算,
两次++后 f0的值是5,这时使用 b进行加法运算,
就是b+b 为10,将第一个运算结果10保存在f4上,
最后再用f4上的值与f0上的值相加,b由于后面又调了一次++,
f0上变成6,f4上是10,就是16了;


刚分析的,写的有点乱,不知道能不能看懂



作者: liusuizuoyou    时间: 2015-8-5 12:40
奇怪了  我在xcode  c 跟oc 下运行结果都是  15
作者: 魔尊    时间: 2015-8-5 14:04
经过测试在Windows平台下的vs2013上,打印结果竟然是18
在Mac平台下的XCode的打印结果竟然是15
作者: 馒头爱财    时间: 2015-8-5 15:46
十五是正解
作者: Eil.tea    时间: 2015-8-5 16:25


作者: 庞佳星    时间: 2015-8-5 16:44
vc  6.0  是16求解释  
作者: DUKEMAN    时间: 2015-8-5 20:01
魔尊 发表于 2015-8-5 14:04
经过测试在Windows平台下的vs2013上,打印结果竟然是18
在Mac平台下的XCode的打印结果竟然是15 ...

看到运行不同结果我也是晕了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2