当前位置:网站首页>Comparison between variable and "zero value"
Comparison between variable and "zero value"
2022-07-06 22:30:00 【It's Beichen not too PI acridine】
Variables and “ Zero value ” Comparison
bool Variables and “ Zero value ” Compare
bool Variables and “ Zero value ” To compare if How to write sentences ?
bool bTestFlag = FALSE;
Think about why bool Variables are generally initialized to FALSE better ?
You can make this boolean variable negative and non-zero , because FLASE Everyone knows the value of , In the compiler, it is defined as 0; but TRUE The value of ? All are 1 Do you ? Unfortunately , Not all of them 1.Visual C++ Defined as 1, And its siblings Visual Basic Just put TRUE Defined as -1. That's obvious FALSE Reverse is TRUE, but TRUE Not after inversion FLASE.
A), if(bTestFlag == 0);
if(bTestFlag == 1);
B), if(bTestFlag == TRUE);
if(bTestFlag == FLASE);
C), if(bTestFlag);
if(!bTestFlag);
Which group or groups are correct ? Let's analyze :
A) How to write it :bTestFlag What is it? ? Integer variables ? If it hadn't been for this name, it would have followed the previous naming conventions , I'm afraid it's easy to misunderstand it as an integer variable . So this kind of writing is not good .
B) How to write it :FLASE Everyone knows the value of , In the compiler, it is defined as 0; but TRUE The value of ? All are 1 Do you ? Unfortunately , Not all of them 1.Visual C++ Defined as 1, And its siblings Visual Basic Just put TRUE Defined as -1. That's obvious , This kind of writing is not good .
Everybody knows if Statements branch and jump by the value of the expression in parentheses behind them . If the expression is true , execute if The code immediately following the statement ; Otherwise, do not execute . That's obvious , This group is well written , It will not cause misunderstanding , Nor because TRUE or FLASE Error due to different defined values of . remember : Write code like this in the future .
Integer variables and “ Zero value ” Compare
Integer variables should be used as “==” or “!=” Direct and 0 Compare .
if (value == 0)
if (value != 0)
// Can't imitate the style of Boolean variables
if (value) // It's misleading value It's a boolean variable
if (!value)
float Variables and “ Zero value ” Compare
float Variables and “ Zero value ” To compare if How to write sentences ?
float fTestVal = 0.0;
A), if(fTestVal == 0.0);
if(fTestVal != 0.0);
B), if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON)); //EPSINON For defined precision .
B Group is correct
Be sure to pay attention to , Whether it's float still double Variable of type , There are limits to accuracy . So you must avoid using floating-point variables with “==” or “!=” Compare it with numbers , We should try to translate it into “> =” or “ <=” form .
Pointer variables and “ Zero value ” Compare
Pointer variables should be used as “==” or “!=” And NULL Compare .
The zero value of a pointer variable is “ empty ”( Write it down as NULL). Even though NULL The value of is equal to 0 identical , But they have different meanings .
Suppose the name of the pointer variable is p, It's a standard to compare it to zero if The statement is as follows :
if (p == NULL) // p And NULL Explicit comparison , emphasize p It's a pointer variable
if (p != NULL)
Don't write as
if (p == 0) // It's easy to be misunderstood p It's an integer variable
if (p != 0)
perhaps
if (p) // It's easy to be misunderstood p It's a boolean variable
if (!p)
Sometimes we may see if (NULL == p) This weird format . It's not a program error , It's the programmer who wants to prevent if (p == NULL) Misspelled if (p = NULL), And intentionally put p and NULL Reverse . The compiler thinks if (p = NULL) It's legal. , But it will point out that if (NULL = p) It's wrong. , because NULL Cannot be assigned .
边栏推荐
- Inno Setup 打包及签名指南
- Dealing with the crash of QT quick project in offscreen mode
- [sdx62] wcn685x will bdwlan Bin and bdwlan Txt mutual conversion operation method
- Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
- Spatial domain and frequency domain image compression of images
- PVL EDI 项目案例
- Aardio - 通过变量名将变量值整合到一串文本中
- Balanced Multimodal Learning via On-the-fly Gradient Modulation(CVPR2022 oral)
- (十八)LCD1602实验
- HDR image reconstruction from a single exposure using deep CNN reading notes
猜你喜欢
(十八)LCD1602实验
MySQL数据库基本操作-DML
Pit encountered by handwritten ABA
剪映+json解析将视频中的声音转换成文本
Leetcode exercise - Sword finger offer 26 Substructure of tree
C# 三种方式实现Socket数据接收
软考高级(信息系统项目管理师)高频考点:项目质量管理
Memorabilia of domestic database in June 2022 - ink Sky Wheel
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
3DMax指定面贴图
随机推荐
Chapter 3: detailed explanation of class loading process (class life cycle)
基于 QEMUv8 搭建 OP-TEE 开发环境
The nearest common ancestor of binary (search) tree ●●
The SQL response is slow. What are your troubleshooting ideas?
qt quick项目offscreen模式下崩溃的问题处理
volatile关键字
extern关键字
如何用程序确认当前系统的存储模式?
2022-07-04 the high-performance database engine stonedb of MySQL is compiled and run in centos7.9
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
AI enterprise multi cloud storage architecture practice | Shenzhen potential technology sharing
手写ABA遇到的坑
void关键字
Assembly and interface technology experiment 5-8259 interrupt experiment
MySQL----初识MySQL
【LeetCode】19、 删除链表的倒数第 N 个结点
Oracle control file and log file management
【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真
Web APIs DOM time object
Pit encountered by handwritten ABA