c语言lover 发表于 2014-7-11 19:08:27

为什么这个算出来b=22???请讲一下 谢谢

#include <stdio.h>

void main()

{
        int a,b;
        a=5;
        b=(++a)+(++a)+(++a);
        printf("%d\n,%d\n",a,b);
}
搞不清楚(++a)+(++a)+(++a)的含义

牡丹花下死做鬼 发表于 2014-7-11 19:11:04

论坛 自己搜自增自减

红头发 发表于 2014-7-11 19:24:55

http://bbs.fishc.com/forum.php?mod=viewthread&tid=27746
此贴有详解,笑纳

微笑的好吧 发表于 2014-7-11 20:53:30

编译器问题。。有好多人问了。。

__star__ 发表于 2014-7-11 21:00:18

钻牛角尖的问题,这个不同编译器应该有不同的处理,你自己反汇编看看就知道了

c语言lover 发表于 2014-7-12 13:50:20

红头发 发表于 2014-7-11 19:24
http://bbs.fishc.com/forum.php?mod=viewthread&tid=27746
此贴有详解,笑纳

谢谢   懂了               

haovcf 发表于 2014-7-12 20:20:40

楼主我建议你不要问这类问题,在平台上具有不可移植性,可能计算结果不一样,你只要搞清楚i++
和 ++ i ,就可以了。。这类问题没有价值。。

duelex 发表于 2014-7-13 21:10:16

我只想说,楼主你要学会使用C的调试工具

零度非安全 发表于 2014-7-13 21:32:47

楼上正解!!!!!!!!!!!!!!!!!!

zhoushilei 发表于 2014-7-13 22:09:51

本帖最后由 zhoushilei 于 2014-7-13 22:35 编辑

这里是C++的一个BUG,他是先计算完所有的++A ,在计算A+A+A,就是说它完成的8+8+8,这是这个语言转化为汇编的一个特点,最好以后不要这样写代码,容易误解。这种东西没有什么高端不高端的地方,反正公司里看到你的代码这样写,就不会应聘你的。{:1_1:}

zhoushilei 发表于 2014-7-13 22:38:34

我稍微修正一下,这个是BUG,有时候他是先做几次++A,在做计算的,可能还会在做几次++a,一般是先做完++a,在做和的。我们的C++老师说这是编译器的BUG。
页: [1]
查看完整版本: 为什么这个算出来b=22???请讲一下 谢谢