各位看官們,大家好,上一回中咱們說的是break到哪裡的例子,這一回咱們說的例子是:通過printf函數輸出%。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
看官們, 我們今天介紹如何通過printf函數輸出%。在介紹之前,大家想想,如何才能實現這個目標呢?這時台下有看官說話了:“使用轉義字符“\”就可以了,因為%是一個特殊的符號,在printf函數中輸出一些特殊符號時通常使用轉義字符“。那我們就來按照這位看官的方法來試試。
#includeint main() { printf("\%"); return 0; }
我們把上面的代碼保存到一個文件中然後編譯,編譯時發現有編譯警告,詳細如下:
warning: spurious trailing ‘%’ in format [-Wformat=] printf("\%"); //這是使用gcc 4.8.4的編譯結果,其它編譯器的結果可能會有所不同
這是個測試程序,我們先忽略這個警告,接著運行編譯完的程序,這時發現沒有輸出想要的%來,看來這個程序有問題,這也說明這種方法不可行。為什麼呢?其實在printf函數中%是一個轉義字符,它後面加上相應的字符時就會專門的含義,比如我們常用的%d表示輸出int類型的數值,%c表示輸出char類型的數值。而\也是一個轉義字符,比如常用的\n表示換行。printf函數在處理轉義字符時會檢查轉義字符後面的字符,然後對其做出處理。%和\這兩個轉義字符放在一起時,其行為是末定義的,因此gcc編譯器給出了編譯警告,而且生成的程序不能輸出正確的結果。
正所謂兩虎相爭,必有一傷,兩個不同的轉義字符放在一起也是不合理的。這種辦法行不通,那麼我們怎麼辦呢?我給大家點提示:如何在printf函數中輸出\呢?這時有看官回答說:“使用兩個\轉義字符,也就是printf("\\")";那麼是不是轉義字符%也可以通過這種方法輸出呢?我們來動手試試:
#includeint main() { printf("\\ \n"); printf("%% \n"); return 0; }
我們把上面的代碼保存到一個文件中然後編譯,編譯很順利,直接生成了可執行文件,我們接下來運行可執行文件,結果如下:
\ //正確輸出轉義字符\ % //正確輸出轉義字符%
各位看官,通過printf函數輸出%的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。