【发布时间】:2011-02-01 09:29:06
【问题描述】:
我一直在阅读 Linux 内核(特别是 2.6.11)。 我遇到了以下定义:
#define unlikely(x) __builtin_expect(!!(x), 0)
(来自 linux-2.6.11/include/linux/compiler.h:61 lxr link)
什么 !!完成?为什么不直接使用 (x)?
另见:
【问题讨论】:
-
@Joel Potter,看起来你是对的。我搜索的是 C 而不是 C++...
-
@Joel:这些问题分别与 C++ 和 Perl 有关。虽然 C++ 至少很接近,但在实践中,由于 C 没有内置布尔类型,因此用途至少有所不同!
-
@Shog9,真的。但这种差异在常用用法中似乎很小。如果没有其他人同意,那么这个问题将保持开放。 ;-)