gpt4 book ai didi

c - __builtin_clz 为输入零返回不正确的值

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

我正在使用 GCC 提供的函数 __builtin_clz,它应该计算 unsigned int 中前导零位的数量。但是 __builtin_clz 为输入 0 返回了不正确的值:

#include <stdio.h>
int main(void) {
unsigned int x = 0;
int lz = __builtin_clz(x);
printf("%d\n", lz);
return 1;
}

我希望这会在我的机器上打印 32。相反,它打印 4195634:

$ gcc -Wall clz.c
$ ./a.out
4195634

这是我的错吗?我是否在某处调用了一些未定义的行为?

最佳答案

Is this my fault? Have I invoked some undefined behavior somewhere?

是的,将 0 传递给 __builtin_clz。来自GCC documentation :

Returns the number of leading 0-bits in x, starting at the most significant bit position. If x is 0, the result is undefined.

关于c - __builtin_clz 为输入零返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49580083/

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