读书人

#define ZERO 0 如何又是一个可以不

发布时间: 2012-04-23 13:17:38 作者: rapoo

#define ZERO 0 ,怎么又是一个可以不写的开头呢
最近学习c++,代码如下
#include<iostream>
#include<climits>
//#define ZERO 0 不知道加上的目的是什么,先百度查看一下
void samm(int);
int main()
{
using namespace std;
short sam=SHRT_MAX;//定义最大的short值
unsigned short sue=sam;//将无符号类型的sue取值为sam
//unsigned的定义任何数值都为正数,比如int,原本为-32768到32767的范围,标注了unsigned之后,取值范围为0到65535
cout<<"sam="<<sam<<endl;
cout<<"sue="<<sue<<endl;
int a;
cout<<"please cin a:";
cin>>a;
samm(a);
return 0;
}
void samm(int b)
{
using namespace std;
short sam=SHRT_MAX;//定义最大的short值
unsigned short sue=sam;//将无符号类型的sue取值为sam
sam=sam+b;
sue=sue+b;
//unsigned的定义任何数值都为正数,比如int,原本为-32768到32767的范围,标注了unsigned之后,取值范围为0到65535
cout<<"sam+a="<<sam<<endl;//sam由于范围限制,会再次绕到最小值继续相加,成为了负数
cout<<"sue+a="<<sue<<endl;//sue范围则还有,就会继续往上加。
}
发现#define ZERO 0可以不加上一样不影响结果,为什么要加上呢

[解决办法]
仅从LZ的这个程序段来看,没有必要进行ZERO的宏定义,但是不知后面要不要用ZERO,要用的话还是要加上。不过我觉得吧,ZERO不必使用宏定义,它的意义很明确啊,就是指0,LZ只要定义一个全局变量且不需改变它的值就可以了。其实这都无所谓的。。

读书人网 >C++

热点推荐