我是否正确地说下面每个定义中的基础对象表示(位模式)是相同的?
char c = 240;
unsigned char c = 240;
signed char c = 240;
那么,只有在表达式(或强制转换)中使用c
时,签名 -ness才有意义?
答案 0 :(得分:2)
一般情况下,如果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
对于{{1}},一般情况下没有这样的保证(假设它超出范围)。