解题步骤...
正确答案:
解题步骤
step1.由于赋值运算符是右结合的性质,因此10最先赋值给c,然后将c赋值给b,最后将b赋值给a,使得a、b、c均赋值为10
int a,b,c;
a=b=c=10;
实质:a=(b=(c=10))
step2.由于运算符的结合性:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
因此先进行关系运算,即b==c,然后再进行赋值运算:
a=b==c;
实质:a=(b==c)
printf("a=%d b=%d c=%d\n",a,b,c);
由于b、c均在前面步骤中赋值为10,因此b==c,关系表达式成立,关系表达式值为1,然后将表达式的值赋值给a,因此a的值最后为1;但b、c的值没有发生变化,还都是10。
输出:a=1 b=10 c=10;
step3.由于运算符的结合性:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
先进行关系运算,即b>c>=100,由于此时优先级相同,依靠其结合性进行运算:自左向右运算,b>c 不成立,关系表达式的值为0;然后比较 (b>c)>=100,即 0>=100 不成立,关系表达式的值为0;最后将0赋值给a,a的值为0;但b、c的值依旧没有发生变化,都是10
a=b>c>=100;
实质:a=((b>c)>=100);
printf("a=%d b=%d c=%d\n",a,b,c);
输出:a=0 b=10 c=10;
登录后提交答案