变量与基本类型
2.1 基本内置类型
选择类型的一些经验准则:
当明确知道数值不可能为负时,选用无符号类型。
使用int执行整数运算。如果数值超出了int的表示范围,选用long long。
只有在存放字符或布尔值时才使用char或bool。
执行浮点数运算选用double。
2.12 类型转换
非布尔类型的算术值赋给布尔类型时,初始值为0则结果为false,否则为true。
布尔值赋给非布尔类型时,初始值为false则结果为0,初始值为true则结果为1。
浮点数赋给整数类型时,进行了近似处理。结果值将仅保留浮点数中小数点之前的部分。
整数值赋给浮点类型时,小数部分为0。如果该整数所占的空间超出了浮点类型的容量,精度可能有损失。
赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数驱魔后的余数。
提示:切勿使用带符号类型和无符号类型
如果表达式中既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果,这是因为带符号数会自动地转换成无符号数。例如,在一个形如 a*b 的式子中,如果 a = -1,b = 1,而且a和b 都是int,则表达式的值显然为-1。然而,如果a是int,而b是unsigned,则结果须视在当前机器上int所占位数而定。一般结果为4294967295。
2.2.3 标识符
命名规范
目的:提高程序的可读性
1. 体现实际含义
2. 一般用小写字母
3. 自定义的类名一般以大写字母开头,如Sales_item
4. 如果标识符由多个单词组成,则单词间应有明显区分,如student_loan 或studentLoan.
2.2.4 名字的作用域
作用域(scope)是程序的一部分,在其中名字有其特定的含义。C++语言中大多数作用域都以花括号分隔。
作用域中一旦声明了某个名字,它所嵌套的所有作用域中都可以访问该名字。
#include < iostream >
using namespace std;
// 该程序仅用于说明:函数内部不宜定义与全局变量同名的新变量
int reused = 42; // reused 拥有全局作用域
int main()
{
int unique = 0; // unique 拥有块作用域
// 输出#1: 使用全局变量reused;输出 42 0
cout << reused << " " << unique << endl;
int reused = 0; // 新建局部变量reused,覆盖了全局变量reused
// 输出#2: 使用局部变量reused; 输出0 0
cout << reused << " " << unique << endl;
// 输出#3: 显式地访问全局变量reused; 输出 42 0
cout << ::reused << " " << unique << endl;
return 0;
}