gpt4 book ai didi

c++ - 左移 int 的行为

转载 作者:太空狗 更新时间:2023-10-29 20:00:11 25 4
gpt4 key购买 nike

下面是否未定义,为什么?

int i = 0xFF;
unsigned int r = i << 24;

最佳答案

除非int,否则该行为在技术上是未定义的类型超过 32 位。

来自 C++11,5.8/2(描述表达式 E1 << E2):

if E1 has a signed type and non-negative value, and E1×2E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined.

i << 24 的结果类型是(签名)int ;如果它有 32 位或更少,那么 0xff * 2^24 == 0xff000000不可表示(可表示的最大 32 位有符号值是 0x7fffffff ),因此该子句中指定的行为未定义。

关于c++ - 左移 int 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414123/

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