2 u011443762 u011443762 于 2015.06.05 10:55 提问

为什么T1不满足if语句时,程序还是会进入到if语句中

为什么T1不满足if语句时,程序还是会进入if语句中,执行A++?
一下为具体程序:

int A = 0;
flaot T1 = 0.0;
T1 = 0.12;
if(0.86>T1>0.8)
{
A++;
}
得出结果A为很大的值。

9个回答

gamefinity
gamefinity   Rxr 2015.06.05 10:59

计算机不全等于数学。没有0.86>T1>0.8这样的写法的。应该写成0.86>T1 && T1>0.8

u011443762
u011443762 哈哈 傻了
大约 3 年之前 回复
hutianlaix
hutianlaix   2015.06.05 11:03

if(0.86>T1>0.8)
你这一行相当于:
bool result = 0.86 > 0.12;
if( result > 0.8)
{
A++;
{

u011443762
u011443762 你说的非常明了,非常感谢!
大约 3 年之前 回复
leechung
leechung   2015.06.05 11:36

在C语言中 0.86>T1>0.8 表达式中根据从右到左的运算法则,先运算 T1>0.8 得出一个 假,然后转换为0再与 0.86 进行比较 得出结果 为 True。

leechung
leechung   2015.06.05 11:37

在C语言中 0.86>T1>0.8 表达式中根据从右到左的运算法则,先运算 T1>0.8 得出一个 假,然后转换为0再与 0.86 进行比较 得出结果 为 True。

u010655288
u010655288   2015.06.05 11:51

很显然, 0.86>T1>0.8 是错误的!详细楼上说的够清楚了!

frank_20080215
frank_20080215   2015.06.05 12:20

if(0.86>T1>0.8)没有这种代码写法。
if(0.86>T1)&&(T1>0.8)

EnderSnow
EnderSnow   2015.06.06 09:27

C语言中不能用这样的连等式,而且不等号的判断返回的是真假

yunfenglw
yunfenglw   2015.06.06 22:20

if(0.86>T1>0.8)会因为两个'>'优先级相同,所以条件从左向右判断:
0.86>T1( T1= 0.12)?两个数相减,结果为正及逻辑1,存在寄存器中;再将寄存器的值逻辑1与0.8比较,得出1>0.8,也是逻辑1,所以if语句里的会执行~

chaobo_lu
chaobo_lu   2015.06.16 21:00

if(0.86>T1>0.8) 判别表达式写错了
改成 if((0.86 > T1) && (T1 > 0.8)) 就可以了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!