当前位置:网站首页>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

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 .

原网站

版权声明
本文为[It's Beichen not too PI acridine]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061439469568.html