我用TC试过。B真的是显示6啊。。。。
顶起。。。。
嘻嘻。。不好意思。。误解了。。。
还有一道啊。。。
#include "stdio.h"
main()
{
int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);
printf("%d,%d,%d",a,b,c);
}
这里B为什么是6,而a却是0啊???
这句是错的, b=0 才对, c=0,a=0
int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);
你所说的有错!
首先,我们先考虑 (a=c>x) 这个成立不成立
在C语言中的等号是赋值运算,从右到左,而不是数学上的等号概念( == 是C语言的等号)
而且在C语言中,判断语句成立,那么这个式子为 1(真),注意是实实在在的数值等 1,比如 100>1 这个式子的结果就是 1!
c=1,a=5,x=2;c>x,不成立,所以结果就是 0,然后 0 再赋值给 a,所以 a=0
(b=y>z)
b=6,y=3,z=4;
y>z,不成立,得0,赋值给b, b=0!
最后 c=0&&0 &&是且的关系,只要一个得0,结果必然为0
所以,显示结果应该是: 0,0,0