关于赋值表达式的问题同样的程序:int i=5,q;q=(++i)+(++i)+(++i);printf("%d\n",q);在TC 下的输出是 24 在VC++6.0或dev c++下输出的值是 22不知道C++编译器在这里是怎么对 q=(++i)+(++i)+(++i) 进行计算的,22 是怎么
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 10:56:44
关于赋值表达式的问题同样的程序:int i=5,q;q=(++i)+(++i)+(++i);printf("%d\n",q);在TC 下的输出是 24 在VC++6.0或dev c++下输出的值是 22不知道C++编译器在这里是怎么对 q=(++i)+(++i)+(++i) 进行计算的,22 是怎么
关于赋值表达式的问题
同样的程序:
int i=5,q;
q=(++i)+(++i)+(++i);
printf("%d\n",q);
在TC 下的输出是 24
在VC++6.0或dev c++下输出的值是 22
不知道C++编译器在这里是怎么对 q=(++i)+(++i)+(++i) 进行计算的,
22 是怎么得来的,
22是在VC6.0,DEVC++中得到的,不存在正确与否,
想知道它在这些编译器的计算规则,请指教!
关于赋值表达式的问题同样的程序:int i=5,q;q=(++i)+(++i)+(++i);printf("%d\n",q);在TC 下的输出是 24 在VC++6.0或dev c++下输出的值是 22不知道C++编译器在这里是怎么对 q=(++i)+(++i)+(++i) 进行计算的,22 是怎么
在研究之中,但是我认为24是对的.因为是8+8+8.
然后我又帮你想了两天.得出了正确结论:
在VC6.0,DEVC++中是22的原因是:
它们的编译器保证在赋值是始终是:两个相加-〉赋值-〉两个相加-〉赋值.
所以,过程就很清晰了:
q=7+7(=14);//先算到第二个++i;
q=14+8=22);//之后每次都算一个++i就加上去;
如果是:多加一些++i,如:
q=(++i)+(++i)+(++i)+(++i)+(++i); //则是:q=(7+7)+8+9+10;依次类推.
如果是:将i=4赋初值,则是:
q=(6+6)+7+8;
反正我觉得就是这样.应该是对的.