c語(yǔ)言規(guī)定標(biāo)識(shí)符只能由什么開頭 c語(yǔ)言中的關(guān)鍵字可以作為變量名?
c語(yǔ)言中的關(guān)鍵字可以作為變量名?我可以 t .由于C的標(biāo)識(shí)符規(guī)定了以英文字母或_開頭的字母和數(shù)字的組合,而漢字的編碼使用了兩個(gè)字節(jié),每個(gè)字節(jié)的最高位為1,超出了代表英文字母、_和數(shù)字的ASCII碼的范
c語(yǔ)言中的關(guān)鍵字可以作為變量名?
我可以 t .由于C的標(biāo)識(shí)符規(guī)定了以英文字母或_開頭的字母和數(shù)字的組合,而漢字的編碼使用了兩個(gè)字節(jié),每個(gè)字節(jié)的最高位為1,超出了代表英文字母、_和數(shù)字的ASCII碼的范圍,所以漢字不能作為C的標(biāo)識(shí)符.但漢字可以作為C的字符串。
c語(yǔ)言定義符號(hào)常用哪個(gè)命令?
在C語(yǔ)言的源程序中,允許用一個(gè)標(biāo)識(shí)符來表示一個(gè)字符串,稱為宏。定義為宏的標(biāo)識(shí)符被稱為 "宏名 "。在編譯和預(yù)處理時(shí),程序中出現(xiàn)的所有宏名都被替換為宏定義中的字符串,稱為宏替換或宏擴(kuò)展。
宏定義是由源程序中的宏定義命令完成的。宏替換由預(yù)處理程序自動(dòng)完成。
在C語(yǔ)言中,宏定義分為參數(shù)型和非參數(shù)型兩種。下面討論這兩種宏的定義和調(diào)用。
1.無參數(shù)宏定義
不帶參數(shù)的宏名后面沒有參數(shù)。其定義的一般形式是:
#定義標(biāo)識(shí)符字符串
#定義標(biāo)識(shí)符字符串
哪里 "# "表示這是一個(gè)預(yù)處理命令(所有預(yù)處理命令都以#開頭)。 "定義和定義宏的命令。 "標(biāo)識(shí)符 "是一個(gè)符號(hào)常量,即宏名。A "弦與弦可以是常量、表達(dá)式、格式字符串等。
宏定義使用宏名來表示字符串,當(dāng)宏展開時(shí),字符串將替換宏名。這只是一個(gè)簡(jiǎn)單的文本替換,預(yù)處理器并不檢查它。如果有錯(cuò)誤,只有在編譯被宏展開的源程序時(shí)才能發(fā)現(xiàn)。
注意理解 amp的概念變化與挑戰(zhàn)在宏替換中,即在詳細(xì)分析相關(guān)命令或語(yǔ)句的含義和功能之前,需要進(jìn)行文本替換。
[例1]定義常數(shù):
#defineMAX_TIME 1000
If if (time lt MAX_TIME) {...}是寫在程序里的,編譯器在處理代碼之前會(huì)把max _ time替換成1000。
注意,這種情況下用const來定義常數(shù)可能更好,比如const int MAX_TIME 1000。因?yàn)閏onst常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以檢查前者的類型安全,后者只進(jìn)行簡(jiǎn)單的字符文本替換,不進(jìn)行類型安全檢查,替換字符時(shí)可能出現(xiàn)意外錯(cuò)誤。
宏名一般用大寫字母表示,以區(qū)別于變量。宏定義的末尾不需要加符號(hào),否則連分號(hào)都會(huì)被替換。宏定義可以嵌套。
可以用#undef命令終止宏定義的作用域。
使用宏可以提高程序的通用性和可讀性,減少不一致性,減少輸入錯(cuò)誤,方便修改。例如數(shù)組大小常見宏定義。預(yù)處理是編譯前的處理,編譯的任務(wù)之一是語(yǔ)法檢查。預(yù)處理不做語(yǔ)法檢查。宏定義寫在函數(shù)的花括號(hào)和作用域之外對(duì)于后續(xù)程序,通常在文件的開頭。字符串