gpt4 book ai didi

c++ - 设置一个等于 369 的字符给出与 113 相同的二进制模式是 UB 行为吗?

转载 作者:太空狗 更新时间:2023-10-29 23:33:31 25 4
gpt4 key购买 nike

众所周知,一个字符是8位的,所以它可以存储从0到255的值,

如果我用更大的值初始化一个 char,比如 369,我会得到与 113 相同的二进制模式即:MSVC12下的01110001

它是一个标准,还是未定义的行为?

最佳答案

请注意 369 - 256 == 113

4.7 积分转换,第 2 和 3 段:

If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source integer (modulo 2^n where n is the number of bits used to represent the unsigned type).

If the destination type is signed, the value is unchanged if it can be represented in the destination type (and bit-field width); otherwise, the value is implementation-defined.

但是 char 是否与 unsigned charsigned char 相同也是实现定义的。

所以这种行为确实取决于编译器,尽管大多数人会这样做。

关于c++ - 设置一个等于 369 的字符给出与 113 相同的二进制模式是 UB 行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com