表达式 f=a>b>c 可以写成 f=((a>b)>c),首先看a>b,因为a=3,b=2,所以3>2为真,值为1;然后1>c,因为c=1,所以1>1为假,值为0。最后赋值给f,所以f=0,选A。
对于等式的右边a>b>c
先判断a>b
显然成真,那么比较的结果值为1,然后再拿1和c做比较,显然不成立,即false,这个值对应的就是0,在比较运算符下的值只有1或者0,分别表示true和false
从左往右,先是逻辑判断:a > b ,3 > 2 成真,得到逻辑值 1 , 然后 1 > c , 1 > 1 逻辑判断为假 ,得逻辑值为 0 ,所以最终 f = 0 ,选 A
不知道自己理解的对不对,会不会是
f=((a>b)>c)
这样的话,a>b为true,也就是1;1>c为false也就是0。所以结果为0。
记得大于号的优先顺序应该比等于号高吧,而且C语言应该没有像Python一样可以将比较符号连用的语法。
给题主简单说明一下C所有运算符核心逻辑:
规则1:任何运算符都是按照优先级,再按照结合性,依次计算
规则2:任何运算符只会操作它操作的对象
规则3:运算符计算完后,就剩下它的结果(即使命完成,擦掉运算符和它的操作对象)
示例1:
1 + 2 * 3
这里有2个运算符,乘法优先级高于+,根据规则1,先计算乘法;根据规则2,*的操作对象是 2 和 3,所以无论表达式再长,先计算 2 * 3,其他不管
根据规则3,得到 1 + 6 (运算符完成后,把刚才计算的运算符和数据擦除,留下结果)
根据规则2,计算 1 + 6,得到结果 7
示例2:
a > b > c
根据规则1,两个 > 优先级相同,此时需要看结合性。> 的结合性是从左到右,即优先级相同的情况下,先计算左边的,即先计算 a > b
根据规则3, a > b 即 3 > 2 为真,结果为1,即 1 > c (运算符完成后,把刚才计算的运算符和数据擦除,留下结果)
1 > c 即 1 > 1 为假,结果为 0.
这3条规则,适合C所有运算,包括二级指针,三级指针等复杂运算。
因为运算的本质,就是:1)先计算哪个 2)计算一个,消除一个