C語言中的三字母詞 trigraph

2021-09-01 18:43:15 字數 859 閱讀 9026

c語言中的三字母詞(trigraph)

在ansi c標準中,定義了9三字母詞(trigraph),三字母詞就是幾個字元的序列,合起來表示另乙個字元。三字母詞使c語言環境可以在缺少一些必需字元的字符集(比如,一些非常老式的鍵盤上沒有{}#\^~|)上實現。也許是由於這些字符集我們基本上用不到,所以在大多數c語言的書籍中,我們都看不到對三字母詞的講解。下圖列出了9個三字母詞以及它們所代表的的字元。

源**中的「三字母詞」,在編譯階段會被替換為「對應的字元」。對於以「?」開頭的字串行,如果不能與上面9個匹配,編譯器將保持原狀;一旦匹配,編譯器就會做替換。 下面是我們很容易犯的乙個錯誤(摘自《c和指標》):

printf("delete file (are you really sure??):");
注意:由於編譯器的種類各樣,對ansi c的支援也不一樣,所以可能會有些c編譯器不處理「三字母詞」,會將它們當做普通的字串來處理。 以上測試是在vc++ 6.0下進行的,對於gcc編譯器,需要在編譯的時候新增選擇"-ansi"或者"-trigraphs"。

最後,留意乙個小小的問題,看大家是否對c語言中的三字母詞和轉義字元(不熟悉的同學可以看看這篇部落格理解了,

用printf函式列印出下面這段文字(包括兩邊的雙引號),應該使用怎樣的字串常量引數?

c語言中的三字母詞以及轉義字元

c語言中的三字母詞 trigraph 在ansi c標準中,定義了9個三字母詞 trigraph 三字母詞就是幾個字元的序列,合起來表示另乙個字元。三字母詞使c語言環境可以在缺少一些必需字元的字符集 比如,一些非常老式的鍵盤上沒有 上實現。也許是由於這些字符集我們基本上用不到,所以在大多數c語言的書...

三字母詞和轉義字元

在使用轉義字元之前我們先看一段 include int main 程式輸出的結果 為什麼這個程式不能正常的輸出我們想要的 are you ok 結果呢?原因在於這幾個字元的序列合併起來表示另乙個字元 三字母詞 三字母詞 表示字元 由於三字母詞的引入正常的想輸出 are you ok 這樣的內容就困難...

leetcode 49 字母異位詞分組 C語言實現

leetcode 49 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。思路 排序後的字串相等的放在一...