1个回答
展开全部
a>b>c在c语言里头被认为是一个表达式
根据C编译系统的不同(从左自右结合运算或从右自左结合运算),这个表达式会被认为是(a>b)>c或者a>(b>c)
a>b是一个表达式,如果a大于b,那么这个式子的值就是TRUE,否则就是FALSE
而基本约定俗成的,我们都会#define
TRUE
1,就是说TRUE为1,FALSE为0
假设a=3,b=2,c=1,C编译系统按照从左自右结合运算,那么就是(a>b)>c,由于a比b大,因此a>b这个表达式的值为真,也就是值为1,,然后
表达式a>b的值再与c比较,两边都是1,是相等的,大于号不成立,因此(a>b)>c的结果是FALSE
如果你的本意是想让程序“当a>b且b>c”时执行if语句块里的语句时,你如果用a>b>c,那么if语句块里的语句就有可能根本不会被执行(当然,在我上面假设的这种情况下,如果a=2,b=1,c=0,if语句块中的语句还是会被执行的,你可以自己思考一下)。
因此,为了保证程序的正确性,我们必须这么写:if(a>b
&&
b>c)
如果还有不清楚的地方,可以给我发消息,最近正好要写一本C语言的教材,你提的问题也可以让我们知道在教材中应该在哪些方面要加强
根据C编译系统的不同(从左自右结合运算或从右自左结合运算),这个表达式会被认为是(a>b)>c或者a>(b>c)
a>b是一个表达式,如果a大于b,那么这个式子的值就是TRUE,否则就是FALSE
而基本约定俗成的,我们都会#define
TRUE
1,就是说TRUE为1,FALSE为0
假设a=3,b=2,c=1,C编译系统按照从左自右结合运算,那么就是(a>b)>c,由于a比b大,因此a>b这个表达式的值为真,也就是值为1,,然后
表达式a>b的值再与c比较,两边都是1,是相等的,大于号不成立,因此(a>b)>c的结果是FALSE
如果你的本意是想让程序“当a>b且b>c”时执行if语句块里的语句时,你如果用a>b>c,那么if语句块里的语句就有可能根本不会被执行(当然,在我上面假设的这种情况下,如果a=2,b=1,c=0,if语句块中的语句还是会被执行的,你可以自己思考一下)。
因此,为了保证程序的正确性,我们必须这么写:if(a>b
&&
b>c)
如果还有不清楚的地方,可以给我发消息,最近正好要写一本C语言的教材,你提的问题也可以让我们知道在教材中应该在哪些方面要加强
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询