歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

淺析linux likely unlikely的實現細節

#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/

Copyright © Linux教程網 All Rights Reserved