黑马程序员技术交流社区
标题:
问个简单的问题
[打印本页]
作者:
zhuiyi007
时间:
2014-7-17 12:36
标题:
问个简单的问题
本帖最后由 zhuiyi007 于 2014-7-17 12:44 编辑
#include<stdio.h>
void main()
{
int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
我知道结果是0,我通过vc调试过了,但还是有些不太明白,请各位大神详细解答下
作者:
努力微笑
时间:
2014-7-17 12:39
(a>b>c)
=>(a>b)>c
=>(5>4)>3
=>1>3
=>0
作者:
fantacyleo
时间:
2014-7-17 12:42
这就是个运算符结合性的问题。>是左结合的,所以d=(a>b>c)中,b和左边的>结合,变成d=((a>b)>c),C的关系运算符计算结果只有0和1,a>b为真,所以是1,然后1>c为假,因此d=0
作者:
陆习康
时间:
2014-7-17 14:33
a=5,b=4,所以判断(a>b)成立,所以为真,为1,c=3,所以判断(1>3)不成立,所以为假,为0,返回0.
作者:
流星舞夜
时间:
2014-7-17 16:05
LZ确定没格式错误? a>b 返回的只可能是0或1,你程序的意思就是 c 跟0或1 比较大小,没什么实际意义。
我猜楼主的意思应该是这样:d = a>b && b>c;
希望能帮到你!
作者:
zhuiyi007
时间:
2014-7-18 13:17
谢谢各位的解答,过程我已经大体上明白了~~~
作者:
小海
时间:
2014-7-18 20:57
首先会判断工a>b,得到的结果为1,1>c再判断为0
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2