《C++ Primer》第02章-变量和基本类型
2.1 基本算术类型 算术类型 空类型 类型大小说明 c++标准规定了每个类型的内存最小值,见上表。 一个int至少和一个short一样长 一个long至少和一个int一样长 一个long long至少和一个long 有符号与无符号 一个int和一个unsigned相加,会被转换成unsigned 不要混用有符号和无符号数 字符类型 wchar_t确保可以存放最大扩展字符集的任意一个字符(即取最长长度) char16_t,unicode字符,16位 char32_t, unicode字符,32位 字符串分为三种:char、signed char、unsigned char char和signed char并不一样 浮点数 float通常精度不够 双精度浮点数和单精度浮点数的计算代价相差无几 对某些机器来说,双精度浮点数和单精度浮点数的计算代价相差无几 long double的精度通常下没有必要,且它的运行时消耗不容忽视 类型转换 非布尔类型转布尔类型,若为0则为false,否则为true 布尔类型转其他类型,fasle为0,true为1 浮点数转整型时,仅仅保留浮点数小数点前的部分(做四舍五入吗?) 整型转浮点数时,小数部分为0,如果整数所占空间超过了浮点数容量,精度可能损失(??) 给无符号数赋一个超出它所表示范围的值时,结果是初始值对初始值对无符号数最大值+1取模后的余数。-1赋给unsigned char为255??? -1的表示 建议:避免无法预知和依赖于实现环境的行为 程序应该尽量避免依赖于实现环境的行为,如果把int看成一个确定不变的值,则这样的程序是不可移植的 字面值常量 字符和字符串字面值 一个字面值通常被存放在能存放其的最小的数据类型中,若一个字面值内存超过了最大能存放其的类型,则报错 字符串字面值的长度比其实际长度多1(编译其在每个字符串的结尾处添加一个空字符\0) 如果两个字符串字面值位置紧临且仅由空格、缩进、换行符分隔,则它们实际上是一个整体 转义序列 泛化转义序列,\x后加一个或多个16进制数,\后加1至3个八进制数 指定字面值的类型 例如 初始化和赋值是两个完全不同的操作 初始化是指创建变量时赋予其一个初始值 赋值的含义是把当前的值擦除,用一个新值代替。 4种初始化 1 2 3 4 int a = 0; int a = {0}; int a{0}; int a(0); 当内置类型的变量进行列表初始化时,若存在丢失信息风险,则编译器将报错...