【发布时间】:2012-11-30 07:50:08
【问题描述】:
下面每个定义中的底层对象表示(位模式)是相同的吗?
char c = 240;
unsigned char c = 240;
signed char c = 240;
那么,signed-ness 仅在 c 用于表达式(或强制转换)时才重要?
【问题讨论】:
-
如果
char和signed char有未定义的行为,我不会感到惊讶。 -
@melpomene,我很确定签名溢出规则也适用于初始值。对于
char,是否签名取决于实现。 -
你的答案就在那里 - stackoverflow.com/questions/8385824/…
-
@chris:有符号溢出仅导致算术运算的未定义行为。赋值/初始化(即溢出有符号整数转换)不会产生未定义的行为。相反,它们会产生实现定义的结果。
标签: c++ c char undefined-behavior integer-overflow