C语言高手请指教。。本题答案是什么?为什么

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:40:05
int a=20
...........
if(1<=a<=10)
printf("in range\n")
else
printf("out of range")
书上说C并不具备显示的布尔类型,所以使用整形来代替,其规则是:零是假,任何非零值为真,然而并没有说1比任何其他非零值更加真。既然是a=20,a>=1为真,只能说明是非零的 ,何以是1.请高手不吝赐教。。。。。

我认为1<=a<=10 的意思不是(a>=1 && a<==10) 而是a>=1 && (1=<a)==10
就是1<=a的逻辑值x再与10比较 这里x=非零 为什么不是1<=(a<=10)呢 因为逻辑符号是从左往右的
还有这里是非零(x)==非零(10) (而不是非零1<非零10)
因此是 in range

不等式不能连写,要写成
if(a>=1 && a<==10)

同意斯永利的答案

不等式不能你那样写,应写为:if(a>=1 && a<==10)
结果为:
out of range

in range

因为a=20,a>=1为真,逻辑值为1,1<=10为真,所以执行printf("in range\n")