C++中,如果i=3,那么(++i)+(++i)+(++i)为什么等于16?

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:02:33

又是这种问题,以后写这种表达式的时候都要分开写
a=++i;
b=++i;
c=++i;
d=a+b+c;

如果i声明为int类型结果是16 ,如果声明为double类型结果是15,
这个是编译器的问题,以后遇到这种问题都要分开写,免得出差错

Visual Studio 2008 SP1,该先进了吧?运行时18.
以后别写这样的程序,没有用。
你可以想象看这样写有什么意义?
难道就是为了给自己加3吗?或者是求它们的和?

(++i)+(++i)+(++i) 并不是4+5+6 这是一个典型的依赖处理器当时状况的算式 c++ coding standards 有详细的解释 最好不要写这样的东西 因为处理器会自动判断先算哪部分 可能是4 5 6 也可能是 4+6+5 或者6+4+5 等等 在这种地位均等的情况下不会出错 但是如果是
if(i==2) fun(++i,++i); 那就错大了 可能调用fun(3,4) 也可能调用fun(4,3) 而这完全取决与处理器的预期判断 与电脑配置和当时的内存使用 寄存器使用状况有关

应该可以这样理解吧
++i 等于 i=i+1
所以
a=(++i)+(++i)+(++i) 等价于 a=(i=i+1)+(i=i+1)+(i=i+1)//i=3
先栓第一个括号的 a=i+(i=i+1)+(i=i+1)//i=4
再算第二个括号的 a=i+i+(i=i+1)//i=5
接着 算 i+i 和 括号内的 a=10+i // i=6
然后 我给 你 凑出答案

同上楼的。
++i是在i使用前先+1...
(++i)+(++i)+(++i)=4+5+6=15

++i是在i使用前先+1...
上题:
(++i)+(++i)+(++i)=4+5+6=15