gpt4 book ai didi

c - 将 32 位整数移动 32 位

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

我正在使用一些 C 代码,我需要将 32 位 int 向左移动 32 位。当我使用参数 n = 0 运行此代码时,不会发生移位。

int x = 0xFFFFFFFF;
int y = x << (32 - n);

为什么这行不通?

最佳答案

转移后果自负。根据标准,您想要做的是未定义的行为

C99 §6.5.7

3 - The integer promotions are performed on each of the operands. The type of the result is that of the promoted left operand. If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.

换句话说,如果您尝试将 32 位值移动超过 31 位或负数,则结果是不确定的。

关于c - 将 32 位整数移动 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799344/

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