1.iostream头文件的最新版本提供了作用相似的工具——wcin和wcout,可用于处理wchar_t流。另外,可以通过加上前缀L来指示宽字符常量和宽字符串。下面的例子:
wchar_t bob = L'P' ;
wcout << L"tall" << endl ;
2.任何数字值或指针值都可以隐式转换(即不用显式强制转换)为bool值。任何非零值都被转化为true,而零被转化为false。包括下面这种情况:
bool start = -100 ;
bool stop = 0 ;
cout << start << " " << stop << endl;
运行结果:
1 0
3.C++有一种更好的处理符号常量的方法,就是使用const关键字来修改变量声明和初始化。常量被初始化后,其值就被固定了,编译器将不允许再修改该常量的值,关键字const叫做限定符,因为它限定了声明的含义,给这样的变量强行赋值或作运算会导致这样的后果:
con.cpp:7:9: error: assignment of read-only variable ‘Months’
7 | Months = Months + 1 ;
| ~~~~~~~^~~~~~~~~~~~
con.cpp:8:9: error: assignment of read-only variable ‘Months’
8 | Months = 45 ;
| ~~~~~~~^~~~
4.一定要在声明中就对带有const的常量进行初始化,下面这样不对:
const int toes ;
toes = 10 ;
编译结果:
con.cpp:10:12: error: uninitialized const ‘toes’ [-fpermissive]
10 | const int toes ;
| ^~~~
con.cpp:11:7: error: assignment of read-only variable ‘toes’
11 | toes = 10 ;
| ~~~~~^~~~
在C++而不是C语言中,可以用const值来声明数组长度。
5.浮点数提供的值范围也更大,如果数字很大,无法表示为long类型,比如100兆,也可使用浮点数。
6.带小数部分的数字,计算机会将其分成两部分存储。一部分表示值,另一部分用于对其值进行放大和缩小。比如,对于数字34.1245和34124.5,除了小数点位置不同,其他都相同。可以把第一个数表示为0.341245(基准值)和100(缩放因子)。C++内部表示浮点数的方法与此相同,只不过它基于的是二进制数,因此缩放因子是2的幂,不是10的幂。
7.下面的语句:
cout.setf(ios_base::fixed, ios_base::floatfield);
这种调用迫使输出使用定点表示法,以便更好地了解精度,它防止程序把较大的值切换为E表示法,并使程序显示到小数点后六位。参数ios_base::fixed和ios_base::floatfield是通过包含iostream来提供的常量。
8.除法运算符()的行为取决于操作数的类型。如果两个操作数都是整数,则C++将执行整数除法。这意味着结果的小数部分将被丢弃,使得最后的结果是一个整数。如果其中有一个(或两个)操作数是浮点数,则小数部分将保留,结果为浮点数。
9.对不同类型进行运算时,C++将把它们全部转换成同一类型。浮点常量在默认情况下为double类型。
10.使用相同的符号进行多种操作叫做运算符重载。