C++简单运算,请解释一下

int a = 2, b = 3, c = 4;
b += --a + b++ – --c;
cout << "a = " << a << " b = " << b << " c = " << c << endl;

尽量详细点,谢谢啦!!
答案是: a = 1 b = 5 c = 3
能不能解释一下这步 b++ – --c;

- - a =1;a=1; b + + = 3;b=4; (- - a) + (b + + ) = 4; - - c = 3;c=3;
(- - a) + (b + + ) | - - c = 1; (b + = 1) => (b = b + 1=5)
所以答案是a=1 b=5 c=3
你刚问的这个是或符号,非零就等于1,例如3|4=1,你的提问 有点错误,
--a + b++ – --c 是个整体,四则运算符的优先级最高,|应该排在其后,不明白的可以再提问,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-01
--C 前置的--,立马就改变C的值,是1
b++ 后置的++,在这个算式中b的值还是3 没有变,等号后面运算完后b才会变成4
--C 前置的--,立马就改变C的值,是3
所以变成了
b+=1+3-3 这里的b已经变成4了
也就是 b=4;b+=1;所以b是5

这里要注意的就是前置++ -- 和后置++ --的区别,你可以再试试b++换成(++b) 最后结果就是6了
第2个回答  2011-01-31
b += --a + b++-(--c);//加括号才能在VC++ 2005中编译

b=b+--a+b++-(--c)
=3+1+3-3
=4
上式中有--a,b++,--c,因此执行后a=1,b=5,c=3
第3个回答  2011-01-31
重要的是你要理解运算符的优先级:自增运算符>加减运算符
所以程序执行过程是这样:先a自减1 此时a==1;然后b自加1 此时b==4,c自减1 此时c==3,
最后b+=1+4-3,这个过程中最左边的b==3,当这个过程执行完后b=3+(1+4-3)=5;
很详细了
第4个回答  2011-01-31
a=2==>- - a =1;
b=3==> b + + = 4
c=4==>- - c = 3;
b=3(b)+1(- - a)+4( b + +)-3(- - c )=5
相似回答