C语言再学习 -- 三字母词(转)
生活随笔
收集整理的這篇文章主要介紹了
C语言再学习 -- 三字母词(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參看:C語言中的三字母詞(trigraph)
在ANSI?C標準中,定義了9個三字母詞(trigraph),三字母詞就是幾個字符的序列,合起來表示另一個字符。三字母詞使C語言環境可以在缺少一些必需字符的字符集(比如,一些非常老式的鍵盤上沒有[]{}#\^~|)上實現。也許是由于這些字符集我們基本上用不到,所以在大多數C語言的書籍中,我們都看不到對三字母詞的講解。下圖列出了9個三字母詞以及它們所代表的的字符。
源代碼中的“三字母詞”,在編譯階段會被替換為“對應的字符”。對于以“?”開頭的字符序列,如果不能與上面9個匹配,編譯器將保持原狀;一旦匹配,編譯器就會做替換。 下面是我們很容易犯的一個錯誤(摘自《C和指針》):
#include <stdio.h> int main (void) {printf("??( \n");printf("??) \n");return 0; }root@# gcc test.c test.c: 在函數‘main’中: test.c:4:10: 警告: 三元符 ??( 被忽略,請使用 -trigraphs 來啟用 [-Wtrigraphs] test.c:5:10: 警告: 三元符 ??) 被忽略,請使用 -trigraphs 來啟用 [-Wtrigraphs]root@# gcc -trigraphs test.c 輸出結果: [ ] 注意 :由于編譯器的種類各樣,對ANSI C的支持也不一樣,所以可能會有些C編譯器不處理“三字母詞”,會將它們當做普通的字符串來處理。 以上測試是在VC++ 6.0下進行的,對于GCC編譯器,需要在編譯的時候添加選擇"-ansi"或者"-trigraphs"。?
總結
以上是生活随笔為你收集整理的C语言再学习 -- 三字母词(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试总结(一)-----如何准备
- 下一篇: SpringMVC对日期类型的转换