c语言 if句中 1<x<10和 10>x>1的区别

img


这个转换8进制为10进制的代码,为什么第二个if句里面,运算符必须是9x>9,比如此时输入个14,就不会进行10进制转换,而是14(8)=14(10)

这种连着比较就会转化为逻辑比较呀,肯定结果不一样呀
1<x<10和10>x>1
假设x=20,第一个1<x<10,此时先比较1<x,1小于20成立为真,则为1,然后1小于10成立,所以这整个表达式结果为真。
第二个10>x>1,先比较10是否大于20,很明显为假,则为0,然后0>1为假。
所以这两个顺序颠倒,结果是不一样的
c语言连着比较应该是这种写法,x>1 && x<10。
你如果按上面连着写,就会按上面那种方式进行判断。
有帮助的话采纳一下哦!

在C语言中,不建议使用联系的逻辑运算符,跟你预期的不一样。
1<x<10 先判断1<x 是否成立,结果是0或者1,然后用0或者1跟10比较,因为0和1都小于10,所以这个表达式的值永远为真(1),。
10>x>1 先判断10>x,如果x小于10,结果为1,1>1不成立。如果大于10,10>x不成立,结果为0,0>1不成立,所以这个表达式的值永远为假(0)。

这运算符是有结合方向的,也是有优先级的,结合方向和优先级不同出现的效果也可能不同:
具体的可以看一下下面的优先级表:

如有帮助,还请采纳!谢谢!