#define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0)
有人會問,為什麼上面實現使用!!,其實這樣起到了類型轉化的作用,把非bool型的數據,轉化成了bool型,從而實現比較。
likely:x == 1
unlikely: x== 0
測試程序如下:
#include <stdio.h>
int main(){
int test_int = 100;
printf("%d\n",test_int);
printf("%d\n",!test_int);
printf("%d\n",!!test_int);
test_int = -100;
printf("%d\n",test_int);
printf("%d\n",!test_int);
printf("%d\n",!!test_int);
test_int = 0;
printf("%d\n",test_int);
printf("%d\n",!test_int);
printf("%d\n",!!test_int);
}
輸出結果:
本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/
