程序 问题
#include<stdio.h>void main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,i,j);
}
为什么运行后q是22不应该是21吗 ????
我的C++运行不了结果 q=(++j)+(++j)+(++j)
中分三步计算
1:j先自增1 j=7
2:先计算后两个(++j)+(++j)=14
将第一个(++j)与后两个相加前先要自增1 i=8
3:将(++j)+14=8+14=22
q=(++j)+(++j)+(++j)
中分三步计算
1:j先自增1 j=7
2:先计算后两个(++j)+(++j)=14
将第一个(++j)与后两个相加前先要自增1 j=8
3:将(++j)+14=8+14=22 小甲鱼视频有讲 楼上已经给出答案了,不过我还是建议不要在 i++ 和 ++i 纠结,不同的编译器所得的答案是不一样的。这也是C语言一个特点。 没有哪个程序员会写这种代码的 得到.exe文件后反汇编一下!就应该能弄明白的!试下 你用的是vc6.0编译器吧,不同的编译器结果不同,你可以试试,其实是vc编译器对上面的程序进行了优化,q先自增2次得7 所以运算结果为7+7+8=22,我也搞不懂为什么?只能说是编译器的错。 不要自己给自己找麻烦啊。 这个不叫编译器优化 晕 谁说的
编译器优化不会造成 不同编译器运行结果不同的 这个问题小甲鱼视频里讲过,反汇编一下看看问题出在哪里。 帮顶
页:
[1]