1 变量类型
C++中的变量在日常使用中除了我们最为常见的int(整型)还有很多变量类型可供我们选择。
1.1 使用bool变量存储布尔值
C++中专门有一种存储true和false布尔值的类型,这里true和false都是关键字。
布尔变量适合用于开或关、有或无、可用或不可用等设置。下面举一个结果为布尔值的表达式:
bool DeleteFile=(UserSelection==“yes”);//该句表明只有当UserSelection是yes时为true,否则为false
1.2 使用char变量存储字符
char变量存储单个字符,如下声明示例:
char Input=‘Y’;
使用字符数据时编译器把字符转换成可存储到内存中的数字表示。ASCII码(美国信息交换标准)对拉丁字符A-Z、a-z、0—9、和一些特殊按键(空格等)进行了标准化详情参考如下图
1.3 有符号整数和无符号整数的概念
符号即正负。计算机中所使用的数字都已为何字节的方式存储在内存中。1字节的内存单元包含8位,每位要么是0要么是1,所以1个字节内存单元有28(256)种不同的取值。同样16位即216(65536)个。
若这些取值都是无符号即正数,unsigned short的取值范围是0—65536,因为它占用16位内存。
那如何表示负数呢?一种方式就是将其中的一位用来作为符号位,表示正负。且符号位必须是最高有效位(MSB)。当MSB表示符号位时,假定0表示正1表示负,其他为包含绝对值。
由此,占8位的有符号数的取值范围-127—127,16位的表示-32768—32768,如short int。
1.4 有符号整型short、int、long和long long
这些变量类型的长度不同,取值范围也不同。我们使用最多的类型就是int长度都是32位。在写程序时应该根据变量可能存储的最大值指定合适的类型。
有符号类型的变量声明较为简单。
short int Smallnumber=-100;
int LargerNumber=-70000;
long PossiblyLargerThanInt=-70000;
long long LargerThanInt=-70000000000;
在此应该注意,若预期的变量不会为负数,应将其定义为无符号的。
1.5 浮点类型 float和bouble
在数学中,浮点数就是实数,可正可负,也包括小数。如下
float Pi=3.14;
若要声明双精度浮点数:
double MorePrecisePi=22/7;
2 常量类型
2.1 字面常量
先看一行代码:
int FirstNumber = 0;
将这个int变量的初始值设置为0.这个0是代码的一部分,被编译到应用程序中且不可修改,因此称之为字面常量。字面常量可以是布尔型、整型等任何类型如
cout<<“hello world”<<endl;//hello world集市一个字符串字面常量。
2.2 使用const将变量设置为常量
例如 const double Pi=22.0/7;
在此使用关键字const告诉编译器Pi是一个类型为bouble的常量。
2.3 使用constexpr生命常量
constexpr double GeiPi(){return 22.0/7;}
或者constexpr double TwicePi(){return2*GetPi();}
第二条语句,若用const,将会在运行阶段执行计算,但使用constexpr在编译阶段就计算表达式的值,这提高了应用程序的运行速度。
2.4 枚举常量
有些情况下变量只能有一组特定的取值。例如,指南针不能指向左方。我们需要一种变量取值由我们制定,由此我们可以用关键字enum来声明枚举常量。
3 几个问题
1 既然可以使用常规变量代替常量,为何还定义常量?
通过声明常量,可以告诉编译器,其值是固定的,不允许修改。这样编译器将确保不给常量赋值。
2为何给变量赋初值
若不初始化,无法知道变量包含的初始值。这种情况下,初始值就是内存单元里预留的内容。
3为何不应该频繁使用全局变量?
假设几位程序猿合作开发一个项目,将变量声明为全局。如果其中一个猪队友不小心在他的代码中修改了这些代码——即便是在另一个.cpp文件中,都将影响代码的可靠性。因此为了确保代码的稳定性,不应频繁使用全局变量。
1218219