C语言基础入门48篇_13_关系运算符与关系表达式(等于(==)、不等于(叹=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=),5==nValue方式避免bug,==不可比较浮点型数据)
C语言中的关系运算符有等于(==)
、不等于(!=)
、大于(>)
、小于(<)
、小于等于(<=)
、大于等于(>=)
。他们可以直接用于整型、浮点基本数据类型及指针类型变量的比较。
1. “==”与“!=”
#include <stdio.h>int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);if (nValue == 100){printf("你输入的数字与100相等\r\n");}if (nValue != 100){printf("你输入的数字与100不相等\r\n");}return 0;
}
2. “>”与“<”
#include <stdio.h>int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);if (nValue > 100){printf("你输入的数字大于100\r\n");}if (nValue < 100){printf("你输入的数字小于100\r\n");}return 0;
}
3. “>=”与“<=”
#include <stdio.h>int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);if (nValue >= 100){printf("你输入的数字大于或者等于100\r\n");}if (nValue <= 100){printf("你输入的数字小于或者等于100\r\n");}return 0;
}
4. 关系表达式的值
电脑是无法读取自然语言,需要转换为机器语言的 0/1
进行判断
- 关系表达式求值的结果: 如果为真,则结果为1;如果为假,则结果为0
#include <stdio.h>int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);printf("%d\r\n", nValue > 100);printf("%d\r\n", nValue < 100);if (nValue >= 100){printf("你输入的数字大于或者等于100\r\n");}if (nValue <= 100){printf("你输入的数字小于或者等于100\r\n");}return 0;
}
- 对于选择语句if…else(以及我们之后要学的逻辑运算符),C语言中: 将0看作假条件;将非0看作真条件
#include <stdio.h>int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);if (nValue){printf("你输入的数字为非0,C语言认为为真条件\r\n");}else{printf("你输入的数字为0,C语言认为为假条件\r\n");}return 0;
}
- 初学者常见bug:错写“==”为“=”
因为在C语言中,=
为赋值语句,==
才是比较是否相等的语句。所以如果错将“==”写成“=”,则会造成bug。
int main(int argc, char* argv[])
{int nValue = 0;scanf("%d", &nValue);if(nValue = 5){printf("你输入的数字与5相等\r\n");}return 0;
}
运行结果:
一些公司的代码规范中长会写成如下格式:5==nValue
这样写成5=nValue
是无法编译通过的。
- 不要对浮点运算符直接使用==
或者 !=
“==”不能直接用于浮点数的比较,否则可能出现bug:
#include <stdio.h>int main(int argc, char* argv[])
{float fltValue1 = 3.14f;float fltValue2 = 3.0f;fltValue2 += 0.1f;fltValue2 += 0.04f;if (fltValue1 == fltValue2){printf("C语言认为两个数字相等\r\n");}else{printf("C语言认为两个数字不相等\r\n");}return 0;
}
如果需要比较两个浮点数,应该比较它们的差值,并保证差值在一定的误差区间内:
#include <stdio.h>int main(int argc, char* argv[])
{float fltValue1 = 3.14f;float fltValue2 = 3.0f;fltValue2 += 0.1f;fltValue2 += 0.04f;if (fltValue1 - fltValue2 > -0.0001&& fltValue1 - fltValue2 < 0.0001){printf("在误差范围内可以认为两个数字相等\r\n");}else{printf("在误差范围内应该认为两个数字不相等\r\n");}return 0;
}
其原因与浮点数在内存中的存放格式有关,涉及内存结构的知识,不仅仅是C语言范围内的知识,在进阶类的课程中才会介绍。
5. 学习视频地址:关系运算符与关系表达式
C语言基础入门48篇_13_关系运算符与关系表达式(等于(==)、不等于(叹=)、大于(>)、小于(<)、小于等于(<=)、大于等于(>=),5==nValue方式避免bug,==不可比较浮点型数据)相关推荐
- C语言基础入门48篇_26_身份证号校验程序(以身份证的校验方式是实例加深对数组及函数封装的理解、字符-‘0‘得到字符对应的int类型数字)
本篇根据以二代身份证的校验方式是实例加深对数组及函数封装的理解 1. 第二代身份证号的组成 第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右): AABBCCYYYYMMDDXXXV ...
- C语言基础入门48篇_18_使用循环移动游戏人物(屏幕符号运动、while(1){}进行实时响应,if(表达式){},switch(表达式){},windows的API及API进行自行封装使)
本篇介绍使用循环语句实现指定符号的坐标移动,使用到了while(1){}进行实时响应,if(表达式){},switch(表达式){},windows中封装的API并对API进行自行封装使用. 1.实现 ...
- C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)
菜鸟和高手都会基本,那菜鸟为什么是菜鸟,高手为什么是高手呢?很大的区别在于,高手写的程序[结构性]更好,更容易维护.而函数就是C语言结构化的一种手段. 函数可以将大的计算任务划分为多个较小的任务(解耦 ...
- C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)
1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...
- C语言基础入门48篇_44_静态局部变量、静态全局变量、静态函数(静态局部变量只被初始化一次,保留变量值、静态全局变量是加了作用域的全局变量、静态函数亦是加了作用域的函数)
static关键字 C语言中的static关键字,有多种用法,它可以用来修饰局部变量.全局变量和函数,分别得到静态局部变量.静态全局变量和静态函数. 1. 静态局部变量 普通局部变量,函数每调用一次就 ...
- R语言基础入门(全)
R 是门语言,也是个环境.个人认为R有点像matlab. R自带多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强,个人感觉这个就是插件.因为S的血缘,R比其他 ...
- C语言基础入门学习笔记
前言 我是一个初中生,过完暑假就是一个高一的学生了.在这个暑假里,我学习了韦东山老师和唐佐林老师的课程,所以我写下这个笔记来记录自己的成长历程. C语言基础入门学习笔记 格式 #include < ...
- Lua语言基础入门 (Lua学习一)
Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...
- c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...
C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...
最新文章
- PostgreSQL · 特性介绍 · 全文搜索介绍
- druid不能close mysql连接_alibaba druid mysql连接问题
- Python程序反转给定数字(2种不同方式)
- crontab 日志_聊聊老板让我删除日志文件那些事儿
- Bootstrap3 面板的情景类
- 梁胜:做开源项目的贡献者没有意义 | 人物志
- Thinkphp 公共函数自动加载
- SQL Server查询结果插入表
- OEIS A181891
- Bp神经网络详解—matlab实现Bp神经网络
- 用PHP搞掂黑群晖IPv6的DNSPod解析【7月23日更新,支持v4和v6】
- App上架各大应用市场的地址及操作方法
- jupyter notebook 配置没问题却连接不上服务器
- Fragment already added问题的解决
- 招行一网通 java桥_招行一网通支付接入
- 借助阿里云轻松部署企业网盘
- 在虚拟机安装中Docker及一些基础命令
- 自己动手、丰衣足食!箭头 → ← → ← ---1
- (python代码)BP神经网络模型
- RAC(ReactiveCocoa)之 RAC宏定义