施工提示
本博文尚在施工中,内容并未完成且可能变更。
类型转换与溢出*
类型转换
布尔型
将值赋给布尔型时,赋 0 时得到 false,否则得到 true。
将布尔型赋给其他类型时,赋 false 时得到 0,赋 true 时得到 1。
int m = 3, n = 5; bool b = false; m = b; // 得到 m = 0 b = n; // 得到 b = true
无符号类型:给无符号类型赋超出其范围的值,会得到取模后的余数。
// 8 位的无符号字符可以表示 0~255 之间的值 unsigned char c = 0; c = -1; // -1 对 256 取模,得到 c = 255
另一个例子是把无符号类型与带符号类型一起进行算术计算:
unsigned u = 1; int k = -3; // 对于 32 位 int,以下输出:4294967294 cout << u + k << endl;
带符号类型:给带符号类型赋超出其范围的值,该行为是 未定义行为,产生不可预料的后果。