1.题目:
设int a=3;
执行语句printf("%d\n",a+=(a-=a*a));后输出的结果是?
- [ ] 分析:复合赋值运算符拆解扩展表达式时一定要加括号
- [ ] 注意运算时是否有赋值!!!
- a-=aa→ a-=(aa) → a=a-(aa) →a=a-(33) →a=3-9=-6
- 此时a=-6,接着a+=-6→a=a+(-6)→a=(-6)+(-6)=-12
2.题目:
设int n=2;执行语句n+=n-=n-n;后n的值是 ?
- [ ] 分析:赋值运算符右结合
- n-=n-n→n-=(n-n)→n=n-(n-n)→n=n-(2-2)→n=n-0→n=2
- 此时n=2,接着n+=2→n=n+2=2+2=4
3.题目:
设int i=8,a,b;
a+=(b=4)*(a=3)表达式的值是?
- 分析:根据优先级和结合性
- (b=4)(a=3)→43=12
- a+=12→a=a+12→a=3+12=15
4.题目:表达式x*=y+3等价于
- x=x*(y+3)
5.题目:int a=2,b=5;执行语句a%=10-b;后a的值是?
- [ ] 分析:10-b=10-5=5
- [ ] a%=5→a=a%5→a=2%5=2
6.题目:设inta=2,b=3,c=4;
执行语句a%=b+c; printf('%d\n',a);后的输出结果是?
- 分析:b+c=3+4=7
- a%=7→a=a%7→2%7=2
7.题目:设int a,b=5;,则执行表达式a=b-2==3后a的值是?
- 分析:-优先级第四,==优先级排第七,=排十四
- a=b-2→a=5-2=3
- 3==3是真的1
- a=1
8.题目:设int a=10;,则执行语句a+=a-=a+a;后a的值是?
- 分析:a-=a+a→a-=(a+a)→a-=20→a=a-20→10-20=-10
- 此时a=-10
- a+=-10→a=a+(-10)→a=(-10)+(-10)=-20
9.题目:
int x=5; X+=X-=X+X; 则执行printf("%d\n",x);后输出的值是?
- 分析:X-=X+X→X-=(X+X)→X-=(5+5)→X-=10
- X-=10→X=X-10→X=5-10=-5
- 此时X=-5
- X+=(-5)→X=X+(-5)→X=(-5)+(-5)=-10
10.题目:设int a=2;,则执行a+=a*=15;后,变量a的值是?
- 分析:a*=15→a=a15→a=215=30
- 此时a=30
- a+=30→a=a+30→a=30+30=60
11.题目:x+=y等价于:x=x+(y)
12.题目:设char a,b;与表达式a^=b-2等价的另一表达形式是?
- 分析:a^=b-2→a=a^(b-2)