Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是否正确地说以下每个定义中的基础对象表示(位模式)是相同的?
char c = 240; unsigned char c = 240; signed char c = 240;
那么,仅当在表达式(或强制转换)中使用签名时才重要?c
c
signed char在一般情况下,如果 的范围不涵盖,则说模式相同是不正确的240。如果240超出范围,则此溢出初始化的结果是实现定义的(并可能产生信号,请参见 6.3.1.3/3)。char如果已签名,这同样适用于初始化。
signed char
240
char
该语言保证仅匹配signed char和范围的公共部分的表示unsigned char。例如,这保证产生相同的模式
unsigned char
char c = 10; unsigned char c = 10; signed char c = 10;
在240一般情况下没有这样的保证(假设它超出范围)。