问题描述
- 为什么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为很大的值。
解决方案
计算机不全等于数学。没有0.86>T1>0.8这样的写法的。应该写成0.86>T1 && T1>0.8
解决方案二:
if(0.86>T1>0.8)
你这一行相当于:
bool result = 0.86 > 0.12;
if( result > 0.8)
{
A++;
{
解决方案三:
在C语言中 0.86>T1>0.8 表达式中根据从右到左的运算法则,先运算 T1>0.8 得出一个 假,然后转换为0再与 0.86 进行比较 得出结果 为 True。
解决方案四:
在C语言中 0.86>T1>0.8 表达式中根据从右到左的运算法则,先运算 T1>0.8 得出一个 假,然后转换为0再与 0.86 进行比较 得出结果 为 True。
解决方案五:
很显然, 0.86>T1>0.8 是错误的!详细楼上说的够清楚了!
解决方案六:
if(0.86>T1>0.8)没有这种代码写法。
if(0.86>T1)&&(T1>0.8)
解决方案七:
C语言中不能用这样的连等式,而且不等号的判断返回的是真假
解决方案八:
if(0.86>T1>0.8)会因为两个'>'优先级相同,所以条件从左向右判断:
0.86>T1( T1= 0.12)?两个数相减,结果为正及逻辑1,存在寄存器中;再将寄存器的值逻辑1与0.8比较,得出1>0.8,也是逻辑1,所以if语句里的会执行~
解决方案九:
if(0.86>T1>0.8) 判别表达式写错了
改成 if((0.86 > T1) && (T1 > 0.8)) 就可以了