同一类型变量在不同机器上的bits可能不同,好的程序应该知道怎么处理同类型变量在不同机器上拥有不同的尺寸。
字符型有三种类型char / signed char / unsigned char,实际表现形式是后两者,声明char型,会由编译器决定具体为后两者之中的哪一种。
不要用char型做运算,因为不确定它是否有符号。如果要较小的整型,可以用signed char 和unsigned char.
不要把负值赋给unsigned,实际上,最好不要把有符号赋值给无符号。也不要使两个无符号数运算结果为负。这两种情况都可能会使结果加上unsigned_max变为正值。
test.h中定义变量 int a = 1; 另一个main.cpp中包含test.h,声明extern int a;即可使用该变量。
下面这段代码的最终结果是,b的值被赋给a。(引用被定义后,不能再绑定到其他变量)
int a, b;
int &c = a;
c = b;
常量引用可以用任意表达式初始化(也许和常量初始化没什么差别)。以下代码都是合法的。
const int b = 1;
const int &c = 0;
const int &d = b * c;
下面这段代码相当于用a的值初始化b,而不要认为b绑定到了a。 (个人理解)
int a = 0;
const int &b = a;
const放在*之前声明指向常量的指针,const放在*之后声明该指针是一个常量
const int *p1;
int const *p2; //上面两种写法等同
int * const p3 = &a; //常量必须初始化
常量表达式是指在编译过程中就能得到结果的表达式,如果无法得到结果,编译器将报错。
constexpr int a = 0;
constexpr int b = a;
using可以像#typedef一样声明别名,但using可以用于模板
typedef int int32;
using int32 = int;
template<typename T>
using vint = vector<T>;
decltype(declare type)可以根据变量或函数的返回作为类型声明变量,并保留原修饰符如&/const
int a = 0;
int &b = a;
decltype(b) c = a;