C++ Primer第五版学习笔记八 基本内置类型,类型转换,转义字符,字面值前后缀
#include <iostream> int main() { bool b; // 布尔类型 最小尺寸:未定义 char c; // 字符 最小尺寸:8位 unsigned char uc; wchar_t wc; // 宽字符 最小尺寸:16位 char16_t c16t; // Unicode字符 最小尺寸:16位 char32_t c32t; // Unicode字符 最小尺寸:32位 short s; // 短整型 最小尺寸:16位 unsigned short us; // 无符号短整型 int i; // 整型 最小尺寸:16位 unsigned int ui; long l; // 长整型 最小尺寸:32位 unsigned long ul; long long ll; // 长整型 最小尺寸:64位 unsigned long long ull; float f; // 单精度浮点数 6位有效数字 double d; // 双精度浮点数 10位有效数字 long double ld; // 扩展精度浮点数 10位有效数字 // 选择类型的一些经验准则: // 当明确知晓数值不可能为负时,选用无符号类型 // 如果整数值范围超过了int型,选用long long // 在算数表达式中不要使用char或者bool // 浮点数运算选用double // 类型所能表示的范围决定了转换过程 bool testb = 42; std::cout << testb << std::endl; // testb=1 int testi = testb; std::cout << testi << std::endl; // testi=1 testi = 3.14; std::cout << testi << std::endl; // testi=3,取整数位 double testd = testi; std::cout << testd << std::endl; // testd=3.0 unsigned char testuc = -1; std::cout << testuc << std::endl; // 负数赋给无符号变量 signed char testsc = 256; std::cout << testsc << std::endl; // 超位,testsc的值未定义 // 含有无符号类型的表达式 unsigned u = 10; int testi1 = -42; std::cout << testi1 + testi1 << std::endl; std::cout << u + testi1 << std::endl; // 先把testi1转换为无符号数,然后参与运算 unsigned u1 = 42 , u2 = 10; std::cout << u1 - u2 << std::endl; std::cout << u2 -u1 << std::endl; // 切勿混用带符号类型和无符号类型 // 整数可以是十进制,八进制,16进制 int i2 = 20; std::cout << i2 << std::endl; i2 = 024; // 八进制 std::cout << i2 << std::endl; i2 = 0x14; // 十六进制 std::cout << i2 << std::endl; // 转义字符 // \n 换行符 // \t 横向制表符 // \a 响铃 // \v 纵向制表符 // \b 退格符 // \" 双引号 // \\ 反斜线 // \? 问号 // \' 单引号 // \r 回车符 // \f 进纸符 // 字面值前缀 std::cout << u'a' << std::endl; // u Unicode16字符 char16_t类型 std::cout << U'a' << std::endl; // U Unicode16字符 char32_t类型 std::cout << L'a' << std::endl; // L 宽字符 wchar_t类型 std::cout << u8"test str" << std::endl; // u8 UTF-8 仅限于字符串字面常量 // 整型字面值后缀 std::cout << 45u << std::endl; std::cout << 46U << std::endl; // u或U unsigned类型 std::cout << 47l << std::endl; std::cout << 48L << std::endl; // l或L long类型 std::cout << 50ll << std::endl; std::cout << 51LL << std::endl; // ll或LL long long类型 // 浮点型字面值 std::cout << 13.14f << std::endl; std::cout << 13.15F << std::endl; // f或F float类型 std::cout << 14.15l << std::endl; std::cout << 14.16L << std::endl; // l或L long double类型 return 0; }