A.a*=a-2等价于a=a*(a-2)=4*(4-2)=8
B.a--,3*a-1,计算a--,a=3,3*a-1=8,逗号表达式值等于逗号右侧的值
C.a>1成立表达式的值为:左侧的值,即++a*2=5*2=10(++优先级高于*)
D.a+--a=--a的值为3,a+--a=3+3=6
答案CD
选择CD
就是考察运算符优先级。
C:
a>1?++a*2:3*a
为 ++a*2
++a为5, 并且返回5
5*2 = 10
如果是 a++*2则返回8
D:
a+--a ==> a + (--a)
实现计算 --a, a为4, --a后 a为3, 并且(--a)返回计算后的结果也为3
a + (--a) ==> 3 + (3) = 6
#include
int main(void)
{
int a = 4;
int b = 0;
b = a+--a;
printf("a = [%d]\n", a);
printf("b = [%d]\n", b);
a = 4;
b = a > 1 ? ++a*2 : 3 * a;
printf("a = [%d]\n", a);
printf("b = [%d]\n", b);
return 0;
}
a = [3]
b = [6]
a = [5]
b = [10]
答案是C,结果是10,++的优先级高于*
D,结果是6
其他都是8
怎么感觉 CD都是呢。。。完了迷糊了。。。
在线讲解c语言