gpt4 book ai didi

c - 整数<<32和<<31<<1之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:22 25 4
gpt4 key购买 nike

int exp1 = ((1<<31)>>31)<<32 // output changes everytime
int exp2 = ((1<<31)>>31)<<31<<1 // 0

为什么会这样?

可能是overflow thing导致的,但是没法正确理解。

我花了几个小时试图解决这个问题,需要一些帮助

(p.s 32 位整数)

最佳答案

移位整个类型大小或更多是未定义的行为,所以任何事情都有可能发生(这是因为许多架构移位指令在这些情况下都有奇怪的行为)。将轮类分成两部分可以解决这个问题。

关于c - 整数<<32和<<31<<1之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52456837/

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