提綱:本文主要介紹了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。常量名稱通常用大寫字母表示,常...