经典良好标准风格的if条件语句写法—C/C++程序基础(四)

目录

 

布尔类型变量

整型变量

浮点类型变量

指针变量类型


布尔类型变量

假设布尔变量名字为flag,其与零值比较的标准if语句是:

#include<iostream>
#include <stdio.h>

int main()
{
	bool flag = false;
	if (flag) { printf("good\n"); };  //非标准风格:if (flag == true) { printf("good\n"); };
	if (!flag) { printf("well\n"); }; //非标准风格:if (flag == false) { printf("good\n"); };
	system("pause");
	return 0;
}

这种风格,根据布尔类型的语义,零值为“假”(false),任何非零值为“真”(true)。 之所以将这种风格的编写方式定为标准,是因为在不同的平台上,关于True的定义并不统一。比如,在Visual studio里面,真定义为1,但在Visual basic里面,真则被定义为-1。

整型变量

假设整型变量的名字为value,其与零值比较的标准if语句是:

#include<iostream>
#include <stdio.h>

int main()
{
	int value = 1;
	if (value == 0) { printf("good\n"); }; //非标准风格:if(value);
	if (value != 1) { printf("well\n"); }; //非标准风格:if(!value);
	system("pause");
	return 0;
}

上面的注释部分,是定义整型类型的if语句的时候,常用的风格,这样定义的话,很容易让读者将定义的数据和bool类型所定义的数据混淆。 

浮点类型变量

假设浮点类型变量的名字为x,其与零值(0.0)比较的标准if语句是:

#include<iostream>
#include <stdio.h>

int main()
{
	float x = 1.0;
	float EPSINON = 0.001;
	if ((x >= -EPSINON)&&(x <= EPSINON)) { printf("good\n"); }; // 非标准风格:if(x == 0.0);
	if ((x < -EPSINON)||(x > EPSINON)) { printf("well\n"); }; //非标准风格:if(x != 0.0);
	system("pause");
	return 0;
}

这里需要说明清楚的是,在常用的数据类型里面,float和double这两种数据类型,都是有精度限制的,所以,在遇到用浮点类型的比较或者判断问题的时候,一定要避免用形如:"=="、"!="这类的比较,因为,浮点数据小数点后面跟的数字太多了,找两个是完全相同的很难,当然,如果每次都要求完全相同,那需要规定的位数就太多了!

指针变量类型

指针变量p和零值比较:

#include<iostream>
#include <stdio.h>

int main()
{
	int* p = NULL;
	if (p == NULL) { printf("good\n"); }; //非标准风格:if(p == 0);
	if (p != NULL) { printf("well\n"); }; //非标准风格:if(p != 0);
	system("pause");
	return 0;
}

对于指针变量来说,零值就是"NULL",这俩所表示的意义是完全不同的,如果p和NULL进行比较,强调p是指针变量;如果p和0比较,很容易让人以为p是一个整型变量。

发布了271 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_17846375/article/details/104879797