问答详情
源自:4-16 分支结构之switch语句

if (90<=score<=100)

90<=score<=100

  这个算不算是表达式 ,我用在if (90<=score<=100)语句里面没有什么用 好像根本没有判断啊

提问者:feidudu 2015-07-30 21:45

个回答

  • onemoo
    2015-07-31 10:08:35
    已采纳

    这样写不能实现你想要的逻辑,但这表达式本身是合法的复合表达式

    这个表达式由两个关系运算符组成,关系运算符是左结合的,故C语言是这样解释这个表达式的:

    • 先看左边的90<=score,这个关系运算表达式的结果是布尔值:true or false

    • 然后表达式就变成了 “前次布尔结果”<= 100,这还是一个关系运算表达式,前次的bool结果如果为ture就会自动转换为整型1,这样整个表达式就变成了 1 <= 100。同理,前次bool为false的话,整个表达式就成了 0 <= 100

    • 不管前面是0还是1,都小于100,所以整个表达式永远为true


    按照你的逻辑,应该写成逻辑与表达式: 90 <= score && score <= 100


  • edgex
    2015-10-30 14:06:02

    解释得很有道理.

  • feidudu
    2015-08-06 00:05:57

    解释得很详细谢谢

  • Perona
    2015-07-30 21:55:29

    不算表达式,建议这么写

    if(90<=score&&score<=100)