c語言常用到的幾個冷知識

2021-08-10 22:11:12 字數 929 閱讀 9849

c語言常用到的幾個冷知識

一,巨集定義中的特殊引數(#、##、...和__va_args__)

1,「#

」這個特殊的巨集定義引數也特別有用.#作為乙個預處理運算子,它可以把語言符號字串化(stringizing).例如我們定義的變數等.簡單的說就是把定義值變成字串,常用於列印;

#define stringint(x) #x

int test()

printf("test int is %s\n",stringint(2));

執行結果:test int is 2

2,##運算子可以用於類函式巨集的替換部分.##還可以用於類物件巨集的替換部分.這個運算子可以把兩個語言符號組合成單個語言符號

#define myname(n) "i am##n"

int test()

printf("test string: %s\n",

myname(gchen));

執行結果:test string:i an gchen

定義自動產生陣列  

#define begin_map(name) \

static const int name## _entrys = \

,#define end_map(name) \

\}; \

3__va_args__引數部分 應該為 要替換為的部分的變數,只能代替後面的引數.

#define check1(x, ...) if (!(x))  

#define check2(x, ...) if ((x))  

#define check3(...)  

#define macro(s, ...) printf(s, __va_args__)  

int main()

錯誤的用法:

#define w(x,...,y) 

C語言基礎冷知識彙總

和 的區別 表示按位取反,1變成0,0變成1。表示邏輯取反,false變ture,true變false,在c語言中,邏輯取反的物件只要不是0就表示為真。示例 5 0 5 二進位制00000101 取反11111010 6 表示按位取反,表示邏輯否定 所有的不是0的數用!操作後都是0 只有當運算元為0...

C語言偏冷知識點彙總

1 c語言函式宣告中引數型別寫在右括號後是什麼意思?如下 所示 int add a,b inta intb 像這樣的宣告是什麼意思,我測試過在gcc和vc 裡都能通過,但就是不明白是什麼意思,有什麼用處?有說明文件?答 古這是古老的寫法,稱為k r風格,與下面的形式一樣 int add int a,...

c語言常用的幾個函式

strcpy函式 2 如何給字串進行賦值 a 字串不能直接賦值 b 目前而言。給字串賦值的方法是通過strcpy函式 c strcpy函式需要string.h的標頭檔案的支援 d 在使用strcpy函式時不能把大串賦值給小串 格式 strcpy 字串1,字串2 相當於是字串1 字串2 strlen函...