我的好奇心让我变得更好。 编写代码时会发生什么(或确实发生):
char pseudo_char = 256;
它会存储值为256的虚拟字符吗?或者这是非法的,永远不应该这样做?
答案 0 :(得分:9)
可能溢出(除非CHAR_MAX >= 256
)。这是未定义的行为,任何事情都可能发生。 不太可能格式化硬盘。
答案 1 :(得分:1)
这将是 undefined behavior 。 char的范围是-128到+127或0到255,具体取决于是签名还是未签名,因此在您的情况下可能会发生任何事情。
它会存储值为256的虚拟字符吗?
它会向您显示未定义的行为。你无法预测的东西。
或者这是非法的,永远不应该这样做?
我不会说这是非法的,但是如果你不想进入不可预测的环境,那就不要这样做。
答案 2 :(得分:1)
这会产生一个警告,说“发生了溢出”。但我发现255之后任何其他数字分配给char - 它从0重新启动并为其分配适当的ASCII字符。 喜欢
256 -> (null) equivalent to 0
300 = 256+44 -> , equivalent to 44