将字符初始化为 256

Initializing a char as 256

本文关键字:初始化 字符      更新时间:2023-10-16

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

char pseudo_char = 256;

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

这可能是溢出(除非CHAR_MAX >= 256)。这是未定义的行为,任何事情都可能发生。不太可能格式化硬盘

这将是一个未定义的行为。char 的范围是 -128 到 +127 或 0 到 255,具体取决于它是有符号的还是无符号的,因此在您的情况下可能会发生任何事情。

它会存储值为 256 的虚拟字符吗?

它将显示一个未定义的行为。你无法预测的事情。

或者这是非法的,永远不应该这样做?

我不会说这是非法的,但是是的,如果你不想进入不可预测的环境,那就不要这样做。

这将产生一条警告,指出"发生溢出"。但是我发现在 255 分配给字符的任何其他数字之后 - 它从 0 重新开始并为其分配适当的 ASCII 字符。喜欢

256 -> (null) equivalent to 0
300 = 256+44 -> , equivalent to 44