【C语言进阶深度学习记录】二十一 # 和 ## 号操作符的使用与分析
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】二十一 # 和 ## 号操作符的使用与分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 # 運算符
- 1.1 # 運算符的基本用法
- 1.2 # 運算符的妙用
- 2 ## 運算符
- 2.1 ##運算符的基本用法
- 2.2 ##運算符的工程運用
- 3 總結
1 # 運算符
- #運算符用于在預處理期將宏參數轉換為字符串
- #的轉換是在預處理期間完成的,因此,只在宏定義中有效
- 編譯器并不知道 # 的轉換作用
- 用法如下:
1.1 # 運算符的基本用法
- 代碼:25-1.c
- 運行結果如下:
- 結果顯而易見,這種用法也是非常的簡單易懂。不多做說明。
1.2 # 運算符的妙用
如果想在調用函數的時候講函數自動打印,好讓我們更加了解程序的執行流程。那么我們可以使用 # 運算符來實現這個功能。
如下面的代碼:
- 25-2-lyy.c
- 編譯運行上述代碼結果如下:
代碼很簡單,結果也很簡單。不多做分析。只需要注意 # 運算符的作用即可
2 ## 運算符
- ##運算符用于在預處理期粘連兩個標識符
- ##的連接是在預處理期完成的,因此只在宏定義中有效
- 編譯器不知道 ## 的作用
- 用法如下:
2.1 ##運算符的基本用法
- 代碼25-3.c
- 編譯運行結果為:
- 上述代碼也比較簡單,學會使用##運算符即可
2.2 ##運算符的工程運用
如下代碼:
25-4.c
#include <stdio.h>typedef struct _tag_Student Student; struct _tag_Student {char* name;int id; }; int main() {Student s1;Student s2;s1.name = "s1";s1.id = 0;s2.name = "s2";s2.id = 1;printf("s1.name = %s\n", s1.name);printf("s1.id = %d\n", s1.id);printf("s2.name = %s\n", s2.name);printf("s2.id = %d\n", s2.id);return 0;}上面的代碼,沒有任何問題,但是如果需要定義多個結構體,那么每次都要將下面樣式的代碼下一遍:
typedef struct _tag_Student Student; struct _tag_Student {char* name;int id; };這是非常繁瑣的。
但是如果我們使用##運算符,寫出下面的代碼,就會方便很多:
- 25-4-lyy.c
上面兩個代碼的編譯運行結果是一樣的:
但是很明顯,25-4-lyy.c 比25-4.c更加簡潔通用以下。這就是##運算符的妙用。
3 總結
- #運算符用于在預處理期將紅參數轉換為字符串
- ##運算符用于在預處理期粘連兩個標識符
- 只有預處理器知道#和##的存在,編譯器并不知道
- #和##只在宏定義中有效
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】二十一 # 和 ## 号操作符的使用与分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt6.2.1在线安装教程
- 下一篇: 软考:论文写作