gpt4 book ai didi

c - C 标准对移位比类型宽度更多的位有何规定?

转载 作者:太空狗 更新时间:2023-10-29 16:47:59 24 4
gpt4 key购买 nike

考虑以下代码:

int i = 3 << 65;

我希望结果是 i==0,但实际结果是 i==6。通过一些测试,我发现使用以下代码:

int i, s;
int a = i << s;
int b = i << (s & 31);

ab 的值总是相同的。

C 标准是否说明了关于移动超过 32 位(int 类型的宽度)的任何内容,或者这是未指定的行为?

最佳答案

根据我的 WG12/N1124 草案(不是标准,但对我来说已经足够好了),6.5.7 位移运算符中有以下 block :

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.

所以,未定义。小心。

关于c - C 标准对移位比类型宽度更多的位有何规定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270492/

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