c - !!(x) 在 C(尤其是 Linux 内核)中是什么意思?

标签 c gcc

我一直在通读 Linux 内核(特别是 2.6.11)。 我遇到了以下定义:

#define unlikely(x)     __builtin_expect(!!(x), 0)

(来自 linux-2.6.11/include/linux/compiler.h:61 lxr link )

什么!!完成?为什么不直接使用 (x)?

See also:

最佳答案

!!(x) 强制它为 0 或 1。0 保持为 0,但任何非零值(在 bool 上下文中为“真”)变为 1。

关于c - !!(x) 在 C(尤其是 Linux 内核)中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527086/

相关文章:

c - 如何检查输入的值是否是字符

c - Eclipse 控制台输出不显示是否删除了某些打印

c - 我有一些关于如何将生成的数据保存在新字符串中的 for 循环中的问题

c++ - 当前的 x86 架构是否支持非临时加载(来自 "normal"内存)?

c++ - gcc 优化级别 1 的子选项

c - 内联汇编中的 "matching constraint"是什么意思?

c++ - powerdns + mongodb

c - gcc 中的 #pragma 等效项是什么?

c - 为什么我得到对 pthread_mutexattr_settype 的 undefined reference ?

C优化: Why does the compiler treat an object not as constant?