注册 登录
编程论坛 VC++/MFC

++a和a++的问题

aseeman 发布于 2012-04-04 16:42, 1012 次点击
程序代码:
#include<iostream>

int main()
{
    int a=0,b=0;
    b=(a++)+(a++);
    std::cout<<b;
}


这段程序,输出是0。

程序代码:
#include<iostream>

int main()
{
    int a=0,b=0;
    b=(++a)+(++a);
    std::cout<<b;
}


把上段程序的a++改成++a,输出就是 4。。实在不明白。两段程序大婶解释下。
10 回复
#2
aseeman2012-04-04 16:45
#3
aseeman2012-04-04 16:56
#4
hodochun2012-04-05 11:19
1+0=1
1+1=2
2+2=4
#5
BianChengNan2012-04-05 11:44
这种问题不要纠结,有时候会取决于具体的编译器。但是要记住的一点是前置加加是先加加再参与运算,后置加加是先运算再加加。
#6
蓝xuan2012-04-05 18:30
如例子:
a=0,b=0;
b=a++;
首先得到b=a=0,然后再a++,a=1;
#7
aseeman2012-04-05 23:03
回复 5楼 BianChengNan
有道理学习了。
#8
aseeman2012-04-05 23:03
回复 6楼 蓝xuan
豁然开朗。。基本功扎实啊。
#9
bccn2502012-04-06 12:13
真的不要太纠结,
要让程序按照你的意思做,别让程序把你给绕进去
人有绝对的主动权
如果觉得 ++ 这运算符不好理解,干脆就别用,
再说了,其它某些编程语言,没有 ++ 运算符不也用得好好的吗?
又不是C++有的 你就一定要用到,如果是这样的话,就不会有人反对用goto 了
#10
暗爵2012-04-12 19:44
当++符号在a后面时,表示先运算再a加1,程序以实际上是0+0
而++符号在a前面时,表示先加在运算,程序2实际上是2+2
#11
xishui7772012-06-19 20:46
第一种情况  先进行运算 结果=0;然后a=a+1;
第二中情况  由于编译器进行了优化 首先++a(1)在++a(2);然后在进行运算,结果=4
1