c++ primer 5 笔记

发布时间 2023-12-31 23:33:23作者: 奔付山河
endl;//会刷新设备缓冲区

2.1.2类型转换
wchar_t//确保可以存放机器最大字符集的任意一个字符
char16_t char32_t//Unicode字符集服务
unsigned char c = -1;//255 超出显示范围 初始值对无符号类型表示总数取模后的余数
signed char c = 256;//超出显示范围 c的值未定义

避免混用有符号和无符号类型
int a = 1;
unsigned b = -1;
cout << a * b; // 4294967295 不是 -1 隐式类型转换

//参考 https://www.cnblogs.com/LCCRNblog/p/5225065.html
有符号数与无符号数的相互转换
无符号整数和有符号整数之间进行强制类型转换时,位模式不改变。
有符号数转换为无符号数时,负数转换为大的正数,相当于在原值上加上2的n次方,而正数保持不变。
无符号数转换为有符号数时,对于小的数将保持原值,对于大的数将转换为负数,相当于原值减去2的n次方。
当表达式中存在有符号数和无符号数类型时,所有的操作都自动转换为无符号类型。可见无符号数的运算优先级高于有符号数。
unsigned int a = 20;
signed int b = -130;
 运算一下结果是 b>a