条件判断语句比较
2016-03-29 19:58
225 查看
条件判断语句比较流程控制进行条件语句判断的时候,经常用到各种数据类型的变量与零值比较的问题,这里进行一个总结加深对数据类型的认识,不规范的与零比较语句容易让人对参与比较的数据类型产生误解。
§1. 布尔变量与零值比较
C++有bool类型,C99标准才有布尔类型_Bool,用整型代替布尔类型,非0表示真,0表示假,如果你的编译器不支持布尔类型,可以自定义类型enum_BOOL{FALSE = 0,TRUE = !FALSE}。不可将布尔变量直接与TRUE、FALSE或者1、0进行比较,假设布尔类型的名字为flag,它与零值比较的标准if语句如下:
If ( flag ) //表示flag为真If ( !flag ) //表示flag为假 §2. 整型变量与零值的比较
整型变量应当应用“==”或者是“!=”直接与零比较。假设整型变量的名字为value,它与零值的比较标准if语句如下:
If ( value == 0)If ( value != 0) §3.浮点变量与零值比较
无论是float还是double类型的变量,都有精度限制,所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”的形式。因为float会有误差。比如你赋了float a=0, a有可能是0.000000001,存在误差,所以使用if(x == 0)来判断,经常不会成立。FLOAT_ACCURACY是允许的误差即精度,浮点变量a与零值比较的标准语句为:Const float FLOAT_ACCURACY = 0.00001;If ( ( a >= -FLOAT_ACCURACY) && (a <= FLOAT_ACCURACY) ) §4.指针变量与零值比较
指针变量的零值是空(即为NULL),尽管NULL的值与0相同,但两者意义不同。假设指针变量的名字为p,它与零值比较的标准语句如下:If (p == NULL) //p与NULL显式比较,强调p是指针变量If (p != NULL) If (NULL == p)这种写法是程序员为了防止将if (p == NULL)误写成if (p = NULL)而有意颠倒,所以这样的写法是有一定好处的。
§1. 布尔变量与零值比较
C++有bool类型,C99标准才有布尔类型_Bool,用整型代替布尔类型,非0表示真,0表示假,如果你的编译器不支持布尔类型,可以自定义类型enum_BOOL{FALSE = 0,TRUE = !FALSE}。不可将布尔变量直接与TRUE、FALSE或者1、0进行比较,假设布尔类型的名字为flag,它与零值比较的标准if语句如下:
If ( flag ) //表示flag为真If ( !flag ) //表示flag为假 §2. 整型变量与零值的比较
整型变量应当应用“==”或者是“!=”直接与零比较。假设整型变量的名字为value,它与零值的比较标准if语句如下:
If ( value == 0)If ( value != 0) §3.浮点变量与零值比较
无论是float还是double类型的变量,都有精度限制,所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”的形式。因为float会有误差。比如你赋了float a=0, a有可能是0.000000001,存在误差,所以使用if(x == 0)来判断,经常不会成立。FLOAT_ACCURACY是允许的误差即精度,浮点变量a与零值比较的标准语句为:Const float FLOAT_ACCURACY = 0.00001;If ( ( a >= -FLOAT_ACCURACY) && (a <= FLOAT_ACCURACY) ) §4.指针变量与零值比较
指针变量的零值是空(即为NULL),尽管NULL的值与0相同,但两者意义不同。假设指针变量的名字为p,它与零值比较的标准语句如下:If (p == NULL) //p与NULL显式比较,强调p是指针变量If (p != NULL) If (NULL == p)这种写法是程序员为了防止将if (p == NULL)误写成if (p = NULL)而有意颠倒,所以这样的写法是有一定好处的。
相关文章推荐
- 第四周 项目1(2)
- ROS学习(二)server和client的编写总结
- 第5周项目1:三角形类雏形(4)
- 生成唯一id号解决方法
- 项目中 登录注册逻辑判断
- BurpSuite工具应用
- Java基础知识强化之IO流笔记77:NIO之 Selector
- ZooKeeper的部署与运行
- HDU 4405 Aeroplane chess(概率DP)
- js判断是否为移动设备
- hdu 【1074】Doing Homework
- java你好! 我的java学习之路 Day2
- Communication Patterns
- 构造方法和析构方法
- 第五周上机实践项目 项目1--三角形类雏形(2)
- JackJsonUtils工具类
- 二值网络(Binarized Neural Networks)学习与理解
- HDU——1846Brave Game(巴什博弈)
- 递归问题之分割问题
- 1.3算法入门之打渔晒网