5th Edition 《C++ Primer 》笔记-Part I

注:本文以《C++ (英文版)》(5th )为参考 。
总共由四部分组成:
《C++(5th )》笔记-Part I.The
《C++(5th )》笔记-Part II. The C++
《C++(5th )》笔记-Part III. Tools For Class
《C++(5th )》笔记-Part IV.
1.
略 。。。
Part I. The2.and Basic Types
2.1types分为两类: types & -point types.
2.2 新增 types:long long,,,注意各自的位数限制 。
2.3 一般 types都有和之分,除了两个例外:bool 和 char 。标准未规定类型的内部表示方式和范围,只要求和范围要对称 。
2.4 将无法表示的值赋给类型,要做取模处理,如将-1赋给 char,要模上256,结果为255 。将无法表示的值赋给类型则是 。
2.5 若一个中同时涉及同种类型的和变量,那么将变量转化为类型,转换方式为“wraps " 。这种情况应该尽量避免 。不同类型的和变量的处理方式,见稍后分析 。
【5th Edition《C++ Primer 》笔记-Part I】2.6 默认十进制是类型,八进制、十六进制的则可以为或者 。十进制取以下最先匹配的类型:int, long, long long 。使用超过最大类型范围的是错误的用法(测试后,编译没问题,但会有警告信息) 。默认-point 的类型是 。默认 的类型的是以‘\0'结尾的array ofchars 。
2.7 加前缀(对于字符串和字符)或后缀(对于类型)来限定的类型 。字符(串):u、U、L、u8 。类型:U(u)、L(l)、LL(ll) 。浮点型:F(f)、L(l) 。
2.8 整型的四种初始化方式:int a=0, b(0), c{0}, d={0} 。后两种叫做“list " 。list 的值不允许精度丢失 。
2.9的定义 。
2.10 声明和定义的区别 。int j;//定义,int j;//声明,int j = 32;//定义 。所有只能被定义一次,但可以声明多次 。
2.11 我们定义的标识符不应该:1)以两个连续的下划线开头,2)以下划线+大写字母开头,3)在外面定义,并以下划线开头 。
2.12 NULL是,应尽量用代替 。
2.13 、const限定的是Local to file的 。const 可以通过在前面添加,来变为全局可见 。
//test1.cppstatic int test1 = 1;extern const int test2 = 2;extern const int test3 = 3;//test2.cppstatic int test1 = 11;//ok//extern const int test2const int test2 = 12;//ok,但如果释放掉上面一行,就会出现重定义错误extern const int test3 = 13;//not ok! redefined

5th Edition  《C++ Primer 》笔记-Part I

文章插图
2.14 const 的特殊之处: a = 23; int &b = a;//对于const 而言,这是正确的用法 。
2.15to const: const int *p; int const *p 。const :int *const p 。
2.16 top-level const 和 low-level const 。
2.17(常量表达式)的定义 。是常量表达式,通过常量表达式初始化的const 也是常量表达式 。声明为 的变量,隐含为const类型,并且被常量表达式初始化 。
2.18 “ types”的定义:能够使用修饰的类型 。包括:、、 types 。可以被 、0和有固定地址的对象的地址初始 。内部定义的变量没有固定地址,反之则又; 所以,定义在外部的的地址也是常量表达式 。
2.19 const int *p 和int *p的区别 。const int *p 的意义(P67) 。
2.20 定义类型别名: char* pi;using pi = char * 。注意const pi pstr和 const char *pstr 的区别 。
2.21 type :auto 。auto tells thetothe type from the,所以,auto类型的必须要有一个 。
auto 推断出的类型一般过滤掉了top-level const 和 引用(&) 。
1) auto i = 0,*p = &i;2) int i = 0;const int ci = i, &cr = ci;auto b = ci; // b is an intauto c = cr; // c is an intauto d = &ci; // d is const int *
如果不想过滤掉,需要在auto前加const、在auto后加& 。