(1)#運算子用於在預處理期將巨集的引數轉換為字串
(2)#的轉換作用是在預處理期完成的,因此只在巨集定義中有效,即其他地方不能用#運算子
(3)用法:#define string(x) #x
printf("%s\n",string(hello world!));//注意,hello world!不加引號!
#include #define string(x) #xintmain()
#運算子的妙用
#include //注意巨集後面的為逗號表示式,返回的是第 1 個表示式的值
//該巨集最大的用處在於,可以輸出被呼叫的函式的名稱
#define call(f,p) (printf("call function %s\n",#f),f(p))
int square(int
n)int func(int
x)int
main()
(1)##運算子用於在預處理期粘連兩個識別符號
(2)##的連線作用是在預處理期完成的,因此只在巨集定義中有效。
(3)編譯器不知道##的連線作用
(4)用法:
#define connect(a,b) a##b
int connect(a,1); //int a1;
a1 = 2;
#include #define name(n) name##nintmain()
##運算子的工程應用
#include //該巨集可以方便定義結構體,並給結構體命名。
//省去每次在定義結構體時,都要重複地寫上
//typedef struct ....之類的相同**
#define struct(type) \typedef
struct
_tag_##type type;\
struct
_tag_##type
//定義結構體,並命名為 student
struct(student)
;int
main()
C語言學習筆記 操作符總結
算術操作符 移位操作符 位操作符 賦值操作符 單目操作符 關係操作符 邏輯操作符 條件操作符 逗號表示式 下標引用,函式呼叫和結構成員 求兩個數的和 求兩個數的差 求兩個數的積 求兩個數的商 取模 兩個數相除的餘數 注意事項 左移操作符 右移操作符 邏輯移位和左移類似 int a 5 其二進位制序列...
C語言學習總結 操作符
算術操作符 移位操作符 位操作符 賦值操作符 單目操作符 關係操作符 邏輯操作符 條件操作符 逗號表示式 除了 操作符之外,其他的幾個操作符可以作用於整數和浮點數。對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。對於 操作符如果兩個運算元都為整數,執行整數除法。...
C語言學習記錄17 和 操作符分析
和 操作符對應兩條彙編指令。1 前置 變數自增 減 1 取變數值 2 後置 取變數值 變數自增 減 1 vs和gcc不同 灰色地帶 結果分析 vs先加後自增。為什麼結果不確定?1 c語言中只規定了 和 對應指令的相對執行程式 2 和 對應的彙編指令不一定連續執行 3 在混合運算中,和 的彙編指令可能...