主题:[讨论]自增问题
充满烦恼的青年
[专家分:0] 发布于 2012-06-27 15:59:00
int x=10,y=9;
int a,b,c;
a=(--x==y++)?--x:++y;
b=x++;
c=y;
请问这题中a=(--x==y++)?--x:++y;是怎样执行的?
前自增与后自增有什么不同?
回复列表 (共1个回复)
沙发
ZBC19921123 [专家分:320] 发布于 2012-06-27 17:58:00
a=(--x==y++)?--x:++y相当于a=((--x)==(y++))?--x:++y
先判断(--x == y++)是否成立;成立执行--x,否则执行++y;
根据优先级先执行y++,y=9;然后执行--x,x=9;则--x == y++成立;故a=--x,即a=8;
前自增++a:先执行a+1;再用a;
后自增a++:先用a,在执行a+1;
如int a = 10,b = 10;
a++是先用后加,用的时候a=10, cout << a++ << endl;这句显示10,这句完了后a=11;
++b是先加后用,b=10,加后b=11,cout << ++b << endl;这句显示11
我来回复