C語言的詞法規則

2021-07-29 16:58:11 字數 2238 閱讀 3932

提綱:本文主要介紹了c語言中的詞法規則,包括字元、注釋、接續符、識別符號

一、字元

1、注釋方式

c語言中有兩種注釋方式

(1)/**/

(2)//

2、注釋原則

(1)編譯器剔除掉注釋之後,會用空格來替換原有的注釋位置。

(2)編譯器把/當作一段注釋的開始,將/後面的內容都當作注釋內容,直到出現*/為止,表示注釋結束。

(3)/總是與離他最近的/進行匹配。

(4)注釋/**/不允許巢狀。

(5)只要/和*之間沒有空格,編譯器就會把他當作注釋的開始。

(6)對加注釋的幾點建議

注釋應當簡潔明瞭;

一目了然的**不加注釋;

注釋採用英文;

注釋可以在**的同行或者上一行,但不能在**的下一行。

(7)哪些地方十分有必要加注釋

對於全域性變數必須加注釋;

數值的單位一定要加注釋;

對變數的範圍給出注釋;

對函式的入口出口資料給注釋。

三、接續符

c語言中以\表示斷行,編譯器會自動將\剔除掉,跟在\後面的內容會自動接續到前一行

注:\之前和之後都不能有空格。

四、識別符號

識別符號就是函式、變數、型別等的名字

1、命名規則

識別符號由大小寫字母、數字、下劃線組成,不能以數字開頭。

2、注意事項

(1)識別符號雖然沒有長度限制,但是編譯器會自動忽略第31個字元後面的字元;

(2)ansi c標準規定,c實現必須能夠區別出前6個字元不同的外部名稱(由鏈結器操縱的名字),而且,這個定義中不區分英語字母的大小寫。

(3)內部名和外部名

ansi c標準規定,識別符號可以為任意長度,但外部名必須至少能由前6個字元唯一地區分,並且不區分大小寫。這裡外部名指的是在鏈結過程中所涉及的識別符號,其中包括檔案間共享的函式名和全域性變數名;

ansi c標準還規定,內部名必須至少能由前31個字元唯一地區分。內部名指的是僅出現於定義該識別符號的檔案中的那些識別符號。c語言中的字母是有大小寫區別的,因此count count count是三個不同的識別符號。

(4)識別符號不能和c語言的32個關鍵字相同,也不能和使用者已編制的函式或c語言庫函式同名。

(5)看乙個關於識別符號例題

例:\40的值是多少?\100、\x40、\x100、\0123、\x0123的值又分別是什麼?

我們分別將這些例子執行一下:

\40的值

分析:\ddd代表的是八進位制數,將其轉換為十進位制數再查詢ascii表,便可以得到正確結果

八進位制數40轉換為十進位制數是32,通過ascii字符集查詢到是空格字元,因此輸出結果為空格;

\100和\x40的值

分析:八進位制數100和十六進製制數40轉換為十進位制數是64,通過ascii字符集查詢到是字元@,因此輸出結果為@;

\x100的值

分析:由圖可知,十六進製制數100超出了ascii所能表示的範圍,因此出錯;

\0123的值

分析:由圖可知,輸出的結果為乙個空行加上數字3,\0123是將其看成\012和3,所以列印結果為\n3,即換行和3;

分析:在vs2013下,因為超出ascii編碼範圍而出錯;

但是在有的編譯器下,對於\x0123,二進位制數為0000 0001 0010 0011,捨棄高八位,只表示低八位,ascll碼為35,即為 #。

最後附上ascii編碼表:

C語言程式集與詞法規則

運算子和表示式 一 一 關係運算子和關係表示式 1.關係運算子 比較兩個資料給定關係的運算子稱為關係運算子。c語言中提供了6個關係運算子 大於 小於 大於等於 小於等於 等於 不等於 關係運算子是雙目運算子,其中前4個的優先順序高於後面2個的優先順序,但都比算術運算子的優先順序低,其結合方式為自左向...

C和指標 2 2詞法規則

一.字元 1.三字母詞 三元符 trigrph include using namespace std int main 另外 的實際意義是 cout run are u ready 這就是為什麼上面這段 輸出為 預防三字母詞,加轉義符 cout run are u ready 於是就有了正確的結果...

C 詞法規則之變數 常量 語句 注釋

常量 廣義上來說 c 有兩種資料型別,常量和變數。常量是在定義後它在程式執行中其值不能被改變的量。c 中可以用 define const 這兩種方法定義常量。例如 define price 10 定義單價常量10。const int price 10 定義單價常量10。常量名稱通常用大寫字母表示,常...