当前位置:网站首页>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 .
边栏推荐
- AI enterprise multi cloud storage architecture practice | Shenzhen potential technology sharing
- three.js绚烂的气泡效果
- 3DMAX assign face map
- 【LeetCode】19、 删除链表的倒数第 N 个结点
- PVL EDI project case
- Lora sync word settings
- Memorabilia of domestic database in June 2022 - ink Sky Wheel
- Aardio - 不声明直接传float数值的方法
- return 关键字
- Crawler obtains real estate data
猜你喜欢
Attack and defense world miscall
Mise en place d'un environnement de développement OP - tee basé sur qemuv8
Seata aggregates at, TCC, Saga and XA transaction modes to create a one-stop distributed transaction solution
Pit encountered by handwritten ABA
Leetcode: interview question 17.24 Maximum cumulative sum of submatrix (to be studied)
Oracle control file and log file management
软考高级(信息系统项目管理师)高频考点:项目质量管理
Aardio - 通过变量名将变量值整合到一串文本中
基于 QEMUv8 搭建 OP-TEE 开发环境
【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真
随机推荐
图像的spatial domain 和 frequency domain 图像压缩
A Mexican airliner bound for the United States was struck by lightning after taking off and then returned safely
2022-07-05 use TPCC to conduct sub query test on stonedb
RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
sizeof关键字
Leetcode exercise - Sword finger offer 26 Substructure of tree
rust知识思维导图xmind
雅思口语的具体步骤和时间安排是什么样的?
anaconda安装第三方包
Attack and defense world ditf Misc
CCNA Cisco network EIGRP protocol
基於 QEMUv8 搭建 OP-TEE 開發環境
What are the interface tests? What are the general test points?
Anaconda installs third-party packages
【雅思口语】安娜口语学习记录part1
Management background --2 Classification list
const关键字
剑指offer刷题记录1
Chapter 4: talk about class loader again
Seata聚合 AT、TCC、SAGA 、 XA事务模式打造一站式的分布式事务解决方案