将字符初始化为 256
Initializing a char as 256
我的好奇心让我变得更好了。编写代码时会发生什么(或确实会发生):
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
相关文章:
- 使用 cin.get() 初始化字符数组
- 当我们不使用空字符显式初始化字符数组时,字符串的长度是多少?
- 从 C++ 中的位表示形式初始化字符
- 初始化字符*
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- 使用 auto 关键字初始化字符数组
- make_unique值是否初始化字符数组
- 正在从常量初始化字符数组
- 在类构造函数中初始化字符矩阵
- 如何使用整数值中的数字符号初始化字符数组
- 如何初始化字符的 2D 数组
- 初始化字符数组 - C 和 C++
- 无法初始化C++字符
- 如何使用字符串(字符数组)初始化字符指针,而不是使用整数数组初始化 int 指针
- 是否可以使用有条件选择的字符串文本初始化字符数组
- 初始化字符时空字符的重要性
- 如何使用十六进制数初始化字符数组
- 断言错误,即使在使用 new 初始化字符指针后也是如此
- 如何在C++中使用字符串文字初始化字符的动态数组
- 有没有办法使用位初始化字符