第1个回答 2012-05-11
我来说清楚点把。
1.a=b=c 直接把 c的值赋值给 b,b赋值给a,即 a=3 b=3 c=3,所以a=3,
2.“==”是表判断,“==”的优先级比“=”高(1.中 b=3 c=3)所以b==c为1,所以 为1,
3.a==(b=c)中 a为1, b=c=3,即 a!=3,所以 为0,
4.第四个一样判断 最后 为0
所以 答案是3100
追问主要就想看第四个的详细解析。。。
追答1.运算后得a=3 b=3 c=3
2.运算后得a=1 b=3 c=3
3.运算后得a=0 b=3 c=3
4. 代入得 0==(3==3) 得0
追问3,a==(b=c)中a为1, b=c=3,即 a!=3,所以 为0;
a==,是比较呀,a应该还是等于1吧
第2个回答 2012-05-11
楼上说的都有道理。
最佳答案是这个:
我来说清楚点把。
1.a=b=c 直接把 c的值赋值给 b,b赋值给a,即 a=3 b=3 c=3,所以a=3,
2.“==”是表判断,“==”的优先级比“=”高(1.中 b=3 c=3)所以b==c为1,所以 为1,
3.a==(b=c)中 a为1, b=c=3,即 a!=3,所以 为0,
4.第四个一样判断 最后 为0
所以 答案是3100
然后说一点,输出数字的时候要习惯中间用,或者空格。
比如
printf("%d\n%d\n%d\n%d",a,b,c,d);
printf("%d,%d,%d,%d",a,b,c,d);
第3个回答 2012-05-11
a==(b==c)是将b和c比较,相等为1,否则为0. (b==c)结果为0.然后0再和a比较,不相等 结果为0
追问(b==c)结果为什么是0,前面不是把将c的值赋给b,应该是1啊????
追答b = c,这叫赋值,b == c,这叫比较
追问这我知道。。赋值后不应该就是b=c=3,所以b==c就是1啊,哪里出错了
追答恩,我知道了,C语言中printf语句将参数进行压栈,方向是从右向左。所以先做的是
a==(b==c) 将c与b进行比较结果为0.然后将0赋给a,结果为0,注意此时b的值已经是3了。
然后再做a==(b=c),先将c赋给b,结果是3,然后在和a比较,不相等 ,结果 为 0.
再做a=b==c,b和c的值现在都是3,所以比较结果为1 ,然后把1赋给a , 结果为 1.
最后做a=b=c,c的值是3,一直赋值,结果自然为3了。
现在懂了吧
本回答被提问者采纳