C++ 语言定义了一套包括算数类型和空类型在内的基本数据类型。
1、算数类型:字符、整数、布尔值和浮点数。
2、空类型:不对应具体的值,用于一些特殊场合,如函数无返回值时使用void。
1.1->
算数类型存储大小随机器不同而不同,但C++规定了其最小尺寸,同时编译器可赋予其更大尺寸(如 VS2013 编译 int 4Byte),C++11规定见下表:
同时还规定int>=short,long>=int,long long>=long;
1.2 ->
除bool、扩展字符型(wchar_t,char16_t,char32_t)外,其他整型可分为带符号(singed)和不带符号(unsigned)两类,int、short、long和long long默认带符号。
字符型 char,unsigned char 和signed char虽然有三种,但实际表现只有两种形式,即带符号和不带符号。char 具体表现由编译器决定。
3.字面值常量:一个直接写出的值,字面值类型由他的符号和数值决定。
3.1->
整型:以0开头的数值表示8进制,如011(表示十进制9);0x或0X表示16进制,无前缀表示10进制。面值类型由其值的最大值决定,如10进制字面值会存储到int、 long和long long中最小一个(在可以表示的范围内),字面值 1 就是int 型,而不会是long 型,因为int 可以存的下。
3.2->
字符和字符串面值:‘a’ 是字符面值或char型字面值,"a"是字符串面值,字符串面值实际由字符面值数组构成,编译器会在此数组末尾加空字符(‘\0’)。
3.3->
布尔和指针字面值:true 和false是布尔字面值,由于非0为真,所以非0常量值也可当作布尔值给布尔变量赋值;nullptr是指针字面值。
3.4->
指定字面值类型:通过增加前后缀标识,可改变整型、浮点型和字符型面值默认类型。
3.4.1 字符和字符串 前缀: u表示Unicode16(如u'a'表示 16位的字符'a',之前8位用0补齐),U表示Unicode32,L表示宽字符,u8 表示UTF-8;
3.4.2 整型字面值后缀:u/U表示unsigned,l/L表示 long,ll/LL表示long long。
3.4.3 浮点字面值后缀:f/F表示float,l/L表示long double。