将char初始化为256

时间:2014-03-31 09:24:23

标签: c++ char ascii

我的好奇心让我变得更好。 编写代码时会发生什么(或确实发生):

char pseudo_char = 256;

它会存储值为256的虚拟字符吗?或者这是非法的,永远不应该这样做?

3 个答案:

答案 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