回 帖 发 新 帖 刷新版面

主题:[讨论]自增问题

int x=10,y=9;
int a,b,c;
a=(--x==y++)?--x:++y;
b=x++;
c=y;
请问这题中a=(--x==y++)?--x:++y;是怎样执行的?
前自增与后自增有什么不同?

回复列表 (共1个回复)

沙发

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册