【从零学C++】第二章 基本内置类型
通过学习第一章,已经大致知道了C++是个什么东西,话说和C真的挺像兄弟~~
接下来学习下C++的基本内置类型,许多与C的基本类型一样,主要注意不同的地方。
1.C++算术类型:(主要记录我在C里面没有见到过的)
wchar_t 宽字符(L字符) 16bit
char16_t Unicode字符 32bit
char32_t Unicode字符 32bit
其中bit为C++标准规定的最小值,不同的机器上面有所差别。
2.字符型的三种类型:char, signed char 和 unsigned char。注意的是char和signed char并不一样。
虽然字符型有三种,但是字符的表现形式却只有两种:带符号的和无符号的。类型char实际上会表现为上述两种形式
中的一种,具体实现由编译器决定。
3.当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。
当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的。
unsigned char c = -1 ; //假设char占8bit,则c为255 signed char c2 = 256; //假设char占8bit,c2的结果未定义
4.当一个算术表达式中既有无符号数,又有int值时,那个int值会被转换成无符号数。转换过程与把int直接赋给无符号变量一样。(C中的隐式转换)
5.当从无符号数中减去一个值时,不管这个值是不是无符号数,我们都必须确保结果不能是一个负值:
unsigned u1 = 42, u2 = 10; std::cout<<u1 - u2<<std::endl; //result=32 std::cout<<u2 - u1<<std::endl; //result = after Mod
6.对象是内存中具有类型的区域。我们可以自由地使用对象描述程序中可操作的大部分数据,而不管这些数据是内置类型还是类类型,是有名字的还是没名字的,是可读的还是可写的。
7.初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。
8.变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
9.声明用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。事实上,
它只是说明变量定义在程序的其他地方。程序中变量可 以声明多次,但只能定义一次。
10.const引用:const 引用可以初始化为不同类型的对象或者初始化为右值。
const int &value = 42;但是同样的初始化则不能在非const引用上使用。原因如下:
double dvalue = 3.14; const int &value = dvalue;
对于以上代码编译器做了如下转换:
int tem = dvalue; const int &value = tem;
如果value不是const,那么对于value的修改,不会影响到dvalue的值,只会影响tem的值。
仅允许 const 引用绑定到需要临时使用的值完全避免了这个问题,因为 const 引用是只读的。
11.typedef的目的:
a.为了隐藏特定类型的实现,强调使用类型的目的。
b.简化复杂的类型定义,使其更易理解。
c.允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。
12.如果头文件名括在尖括号(< >)里,那么认为该头文件是标准头文件。编译器将会在预定义的位置集查找该头文件,这些预定义的位置可以通过设置查找路径环境变量或者通过命令行选项来修改。
如果头文件名括在一对引号里,那么认为它是非系统头文件,非系统头文件的查找通常开始于源文件所在的路径。
今天看完了第二章,感觉像是温习C里面的一些基本概念,明天继续第三章,加油~

浙公网安备 33010602011771号