C/C++ 字符、无符号字符和有符号字符的基础表示形式
C/C++ underlying representation of char, unsigned char and signed char
我可以说以下每个定义中的底层对象表示(位模式)是相同的吗?
char c = 240;
unsigned char c = 240;
signed char c = 240;
那么,只有当表达式(或强制转换)中使用c
时,符号性才重要?
在一般情况下,如果signed char
的范围不包括240
,则说模式相同是不正确的。如果240
超出范围,则此溢出初始化的结果是实现定义的(并可能导致信号,请参阅 6.3.1.3/3)。这同样适用于char
初始化(如果它已签名)。
该语言仅保证signed char
和unsigned char
范围的公共部分的匹配表示。 例如,这保证产生相同的模式
char c = 10;
unsigned char c = 10;
signed char c = 10;
对于240
,一般情况下没有这样的保证(假设它超出了范围)。
相关文章:
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 寻找一种更好的方法来表示无符号字符数组
- C++ CUDA:如何将字节表示为字符或字符集?
- 从 C++ 中的位表示形式初始化字符
- 十六进制 QString 表示为无符号字符数组
- C++字符串表示中将无符号字符数组转换为长(或长长)
- 如何转换由字符表示的十六进制值
- 如何将一个数字(大于8个字节)从字符阵列转换为其ASCII表示
- C/C++ 字符、无符号字符和有符号字符的基础表示形式
- 在 C++ 中用什么来表示 lambda 字符
- 为什么不能将 int(表示 ASCII 字符)转换为 std::字符串,而没有大括号环绕在 int 周围?
- 将二进制字符的字符串表示转换为字符串的最佳方法
- 关键字符的十进制表示
- 如何将无符号字符值表示为十六进制字符串
- 将 int 的所有字节设置为(无符号字符)0,保证表示零
- 分配字符缓冲区以保存浮点的文本表示形式
- 以十进制、八进制和十六进制表示法标识整数文本是否与转义字符中的整数文本相同
- 我想在窗口下使用 c++ 以某种基本方式表示西里尔字符
- 家庭作业:一组位中的快速操作(表示为字符数组)
- 如何获取特殊字符输入并存储在字符或字符串变量中?特殊字符表示©或 ž