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

问题描述

为什么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)) 就可以了

时间: 2024-12-08 20:04:40

c语言-为什么T1不满足if语句时,程序还是会进入到if语句中的相关文章

《C语言程序设计与实践(第2版)》——2.2 分支语句

2.2 分支语句 2.2.1 if语句 例2-2中程序的功能是统计C语言程序设计课程期末考试各分数段的人数.按照五级制统计可分成以下几档: 90-100 A 80-89 B 70-79 C 60-69 D 0-59 E 要求输出各分数段的具体人数. 例2-2 用if语句统计各分数段的人数. #include <stdio.h> / 统计各分数段人数/ int main() { int score, i; int grade[5]; for (i = 0; i < 5; i++) grad

使用sql语句,去掉字符串里面的多个括号中的字符串

问题描述 使用sql语句,去掉字符串里面的多个括号中的字符串 比如说,源串是 adgdg[ewrerw]fdafda[2323][244]fdfd, 希望执行语句后得到的是 adgdgfdafdafdfd,即去包含[]以及内部的字符串,这个SQL该怎么写呢? 解决方案 SELECT REGEXP_REPLACE('adgdg[ewrerw]fdafda[2323][244]fdfd','([(.*?)])', '' ) FROM DUAL; 发现这样写可以实现这个目的. 解决方案二: 执行sql

10种Java开发者编写SQL语句时常见错误_MsSql

Java开发者对于面向对象编程思维与命令行编程思维的协调程度,取决于他们如下几种能力的水平: 技巧(任何人都可以编写命令行形式的代码) 教条(有的人使用"模式 - 模式"的方式,即模式无处不在,并以名字作为标识) 情绪状况(在初期,真正面向对象形式的代码比起命令式代码会更加难懂.) 但是,当Java开发人员编写SQL语句时,一切都变得不同了.SQL是一种说明式语言,与面向对象思想和命令式思想无关.在SQL语言中,查询非常容易表达.但它也不是那么容易以最佳或最正确地方式编写出来.开发人员

10种Java开发者编写SQL语句时常见错误

Java开发者对于面向对象编程思维与命令行编程思维的协调程度,取决于他们如下几种能力的水平: 技巧(任何人都可以编写命令行形式的代码) 教条(有的人使用"模式 - 模式"的方式,即模式无处不在,并以名字作为标识) 情绪状况(在初期,真正面向对象形式的代码比起命令式代码会更加难懂.) 但是,当Java开发人员编写SQL语句时,一切都变得不同了.SQL是一种说明式语言,与面向对象思想和命令式思想无关.在SQL语言中,查询非常容易表达.但它也不是那么容易以最佳或最正确地方式编写出来.开发人员

sql语句-SQL语句创建的表不在新建的数据库中而在系统数据库中,

问题描述 SQL语句创建的表不在新建的数据库中而在系统数据库中, SQL语句创建的表不在新建的数据库中而在系统数据库中, 怎么让表在新建的数据库呢 解决方案 肯定你写错了,或者数据库连接到了系统库,或者sql中指明了写到系统库了 解决方案二: 你没写 use database; database是你的数据库 解决方案三: 创建表前,先写需要创建在哪个数据库中.USE DATABASE GO......CREATE TABLENAME() 解决方案四: 先要使用自己的数据库 use databas

hive执行query语句时提示错误

hive执行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException: hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Job 1 out of 1 Number of reduce tasks is set to 0 since

oracle分区表述的FOR语句(下)测试FOR语句时碰到的ORA-14702错误

指定一个分区除了使用分区名称外,很多时候还可以使用FOR语句. 这篇描述测试FOR语句时碰到的ORA-14702错误. 仍然使用上一篇文章的例子: SQL> CREATE TABLE T_PART_RANGE 2  (ID NUMBER, 3  NAME VARCHAR2(30), 4  CREATE_DATE DATE) 5  PARTITION BY RANGE (CREATE_DATE) 6  (PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1'

linux c语言刷新cpu cache后,如果判断数据真正从cache拷贝到内存中了?

问题描述 linux c语言刷新cpu cache后,如果判断数据真正从cache拷贝到内存中了? linux c语言刷新cpu cache后,如果判断数据真正从cache拷贝到内存中了? 解决方案 用secureCRT看打印信息啊

输出-C语言完全数问题,求大神直接给程序

问题描述 C语言完全数问题,求大神直接给程序 输入整数n,判断n是否是完全数,并输出结果 输入N,输出1~N之间的所有完全数 解决方案 #include int main() { int n,N,i,j,sum; printf("输入整数n,判断n是否是完全数:n"); scanf("%d",&n); sum = 0; for (i = 2;i < n;i++) { if (n%i == 0)sum += i; } if (n==sum) printf