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,==不可比较浮点型数据)相关推荐

  1. C语言基础入门48篇_26_身份证号校验程序(以身份证的校验方式是实例加深对数组及函数封装的理解、字符-‘0‘得到字符对应的int类型数字)

    本篇根据以二代身份证的校验方式是实例加深对数组及函数封装的理解 1. 第二代身份证号的组成 第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右): AABBCCYYYYMMDDXXXV ...

  2. C语言基础入门48篇_18_使用循环移动游戏人物(屏幕符号运动、while(1){}进行实时响应,if(表达式){},switch(表达式){},windows的API及API进行自行封装使)

    本篇介绍使用循环语句实现指定符号的坐标移动,使用到了while(1){}进行实时响应,if(表达式){},switch(表达式){},windows中封装的API并对API进行自行封装使用. 1.实现 ...

  3. C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)

    菜鸟和高手都会基本,那菜鸟为什么是菜鸟,高手为什么是高手呢?很大的区别在于,高手写的程序[结构性]更好,更容易维护.而函数就是C语言结构化的一种手段. 函数可以将大的计算任务划分为多个较小的任务(解耦 ...

  4. C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)

    1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...

  5. C语言基础入门48篇_44_静态局部变量、静态全局变量、静态函数(静态局部变量只被初始化一次,保留变量值、静态全局变量是加了作用域的全局变量、静态函数亦是加了作用域的函数)

    static关键字 C语言中的static关键字,有多种用法,它可以用来修饰局部变量.全局变量和函数,分别得到静态局部变量.静态全局变量和静态函数. 1. 静态局部变量 普通局部变量,函数每调用一次就 ...

  6. R语言基础入门(全)

    R 是门语言,也是个环境.个人认为R有点像matlab. R自带多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强,个人感觉这个就是插件.因为S的血缘,R比其他 ...

  7. C语言基础入门学习笔记

    前言 我是一个初中生,过完暑假就是一个高一的学生了.在这个暑假里,我学习了韦东山老师和唐佐林老师的课程,所以我写下这个笔记来记录自己的成长历程. C语言基础入门学习笔记 格式 #include < ...

  8. Lua语言基础入门 (Lua学习一)

    Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...

  9. c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...

    C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...

最新文章

  1. PostgreSQL · 特性介绍 · 全文搜索介绍
  2. druid不能close mysql连接_alibaba druid mysql连接问题
  3. Python程序反转给定数字(2种不同方式)
  4. crontab 日志_聊聊老板让我删除日志文件那些事儿
  5. Bootstrap3 面板的情景类
  6. 梁胜:做开源项目的贡献者没有意义 | 人物志
  7. Thinkphp 公共函数自动加载
  8. SQL Server查询结果插入表
  9. OEIS A181891
  10. Bp神经网络详解—matlab实现Bp神经网络
  11. 用PHP搞掂黑群晖IPv6的DNSPod解析【7月23日更新,支持v4和v6】
  12. App上架各大应用市场的地址及操作方法
  13. jupyter notebook 配置没问题却连接不上服务器
  14. Fragment already added问题的解决
  15. 招行一网通 java桥_招行一网通支付接入
  16. 借助阿里云轻松部署企业网盘
  17. 在虚拟机安装中Docker及一些基础命令
  18. 自己动手、丰衣足食!箭头 → ← → ← ---1
  19. (python代码)BP神经网络模型
  20. RAC(ReactiveCocoa)之 RAC宏定义

热门文章

  1. 哈佛参考文献注释及APA文献格式介绍
  2. 微信小程序爱江山更爱美人忘记服务器,爱江山更爱美人微信小程序
  3. 未授予用户在此计算机上的请求登录类型 登录失败的解决方案
  4. 基于onenet的开关定位接收消息的APP设计
  5. STM32F10x系列GPIO寄存器BRR、BSRR、ODR、IDR的使用理解
  6. CDH6中的各种目录
  7. [LINUX]手动清理syslog
  8. 学人工智能有前途吗?人工智能前景-AI就业方向
  9. WebJars简介 —— 前端资源的jar包形式
  10. CentOS7救援模式修复系统丢失文件