C++ 常用的零值比较

本文讨论了C++编程中关于if语句的常见错误,涉及布尔类型(误用true/false比较)、整型和浮点数的精确比较(精度问题),以及C++11后对指针零值nullptr的使用。作者呼吁读者在评论区交流指正。
摘要由CSDN通过智能技术生成

概述

if语句是最常用的语句,但很多时候容易用隐含的错误方式书写。最常见的就是变量与零值的比较。

布尔类型

布尔类型的定义: 0为“假”,任何非0值都为“真”。true 表示“真”, false表示“假”,对于true的值并没有什么统一的标准。看下面代码实例部分:

/// 这些都是关于布尔类型的if的不良写法,尤其是跟true、false值去比较
if(bFlag != true)			
if(bFlag == false)
if(bFlag != 1)
if(bFlag == 0)

// 正统写法
if(bFlag)		// 表示bFlag为真
if(!bFlag)		// 表示bFlag为假

整型类型

整型就是跟零值去比较,因为false的值是确定的。

if(nValue == 0)			// 整型 nValue 为零 
if(nValue != 0)			// 整型 nValue 不为零 

浮点数类型

浮点数都会有一个精度限制,超过精度的部分会被截取掉,因此本来不相等的两个浮点数可能就会相等了。浮点数的比较是通过 浮点数之差的绝对值和一个误差去比较。如:

#define EPSILON 1e-6

if(abs(fValue1 - fValue2) <= EPSILON)			// 表示浮点数fValue1 和 浮点数fValue2 相等
if(abs(fValue1 - fValue2) > EPSILON)			// 表示浮点数fValue1 和 浮点数fValue2 不相等

指针类型

C++11 之后定义了指针的零值nullptr ,无需沿用历史的null

// nullptr 放前面是为了强制检查判断而非赋值
if(nullptr == ptr)
if(nullptr != ptr)

写在最后

因本人水平有限,错误之处在所难免,欢迎评论区交流指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一生要强的男人.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值