gpt4 book ai didi

c - 将同一个常数移动另一个会产生两个不同的答案?

转载 作者:行者123 更新时间:2023-12-02 09:36:35 24 4
gpt4 key购买 nike

<分区>

我正在调试一些代码,遇到了一些我无法解释的行为。

在这种特殊情况下,我试图将数字 -1 向左移动 32 次以产生零。

int n = 0;
int negOne = ~0;
int negativeN = ( (~n) + 1 );
int toShift = (32 + negativeN); //32 - n

/*HELP!!! These produce two different answers*/
printf("%d << %d = %d \n",negOne, toShift, negOne << toShift);
printf("-1 << 32 = %d \n", -1 << 32) ;

这是控制台输出的内容:

-1 << 32 = -1 
-1 << 32 = 0

我不确定为什么左移在每种情况下都有不同的表现。

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