绝世天珠亮相珠宝展:c语言的问题。

来源:百度文库 编辑:高考问答 时间:2024/04/29 22:32:57
int i=1;
printf("%d",(++i)+(++i)+(++i));

上面的代码为什么输出是“10”?

(++i)+(++i)+(++i)的计算
初始i=1;
++i;此时i=2;
+为二元运算符,再计算右边++i;此时i=3;
+两边的i是同一个变量,所以计算+时,取两个操作数均是3,(+两边的操作数是i,++只是改变变量自身值,之后再拿该变量的值参加运算).
所以(++i)+(++i)=6;此时i=3;
第二个加号左边的操作数值已经算出是6,右边是++i,此时i=4;
所以6+i=6+4=10;

你他吗的电脑有毛病啊 应该是9啊

i原值为1第一步 (++i)后 i=2;第二个(++i)后i=3;第三个(++i)后i=4;

结果应该为 2+3+4=9;

是9,有括号的内容要先算。

说9的对,说10的也对……事实就是这样

按照Ansi C的标准,当在同一表达式中出现三次或者以上的自增(++)、自减(++)运算符的时候,表达式的结果取决于具体实现。具体实现的意思即是运算结果取决于不同的编译器环境,所以,你这题在有的机器上会出现9的结果,有的机器上会出现10。
在实际编程中,根本不会连续采用++和--操作符,如果只是问题的话,你直接别做,有人问你这样的问题你就告诉他这在不同的编译器上结果可能会不同