2.1基本内置类型
2.11算数类型
C++规定一个int至少和一个short一样大但是小于等于long,一个long至少和一个int一样大但是小于等于long long,一个long long至少和一个long一样大。其中long long是C++11中新定义的
与其他整形不同char分为三种:char 、signed char 和 unsigned char。char表现于哪一种具体由编译器决定,这就可以解释当时在写单片机程序时候出现的一些BUG是由于不注意数据类型
切勿混用带符号类型和无符号类型,如:
int a = -1;unsigned int b=1;std::cout<<a*b<<endl;
输出为4294967295即为-1的补码
2.4.3顶层const
顶层const:修饰的对象是常量,适用于任何数据类型。例:int* const p1 = NULL;const int a = 1;
底层const:表示指向的对象是常量,和指针与引用相关。例:const int& = i; const int* pa = &a;
constexpr 和 常量表达式
常量表达式:在编译阶段就得到计算结果的表达式
一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定
例:
const int max_files = 20; //是
const int limit = maxfiles + 1;//是
int staff_size = 27; //不是
const int sz = get_size(); //不是,具体值要到运行时才知道
constexpr变量
C++11标准规定,允许将变量声明为 constexpr 类型,以便由编译器来验证变量的值是否是一个常量表达式。且声明为constexpr的变量一定是一个常量