gpt4 book ai didi

CLion Clang-Tidy 使用带符号整数操作数和二进制按位运算符

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:39 31 4
gpt4 key购买 nike

当我尝试使用 >> 操作数时,我的 c 文件中出现警告。谁能告诉我这是什么意思?

[代码]:

 new_elem = (Elem *) realloc(pl->elem, (pl->size + (pl->size >> 1)) * sizeof(Elem));

[警告]:

Clang-Tidy use of a signed integer operand with a binary bitwise operator.

最佳答案

在 C 语言中,如果变量是有符号整数,则其上的二进制按位运算符 >>> 依赖于实现(您不应该依赖它)。参见 this post正如 Gaurav 在评论中所建议的那样。
在你的例子中,pl->size 是(猜测!)一个带符号的整数,而你做 (pl->size >> 1),所以你按位应用二进制>> 运算符在 pl->size 变量上。 Clang 会尝试就实现定义的行为向您发出警告,以便您修复代码。
在定义明确的有符号整数上使用除法和乘法。无论如何,编译器应该优化代码。

new_elem = realloc(pl->elem, (pl->size + (pl->size/2)) * sizeof(Elem));

关于CLion Clang-Tidy 使用带符号整数操作数和二进制按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211371/

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