當我運行這個下面的代碼:爲什麼printf(「%%」)只打印一個百分號(%)符號?
#include<stdio.h>
#include<conio.h>
void main(){
clrscr();
printf("%%");
getch();
}
我拿到%作爲輸出?
這個邏輯背後的原因是什麼?
當我運行這個下面的代碼:爲什麼printf(「%%」)只打印一個百分號(%)符號?
#include<stdio.h>
#include<conio.h>
void main(){
clrscr();
printf("%%");
getch();
}
我拿到%作爲輸出?
這個邏輯背後的原因是什麼?
這就是printf
的作用:它是打印的格式(F爲格式化)。它使用%
作爲格式化字符。它是唯一的保留字符,需要轉義以表示它自己,即%%
。有關格式http://www.cplusplus.com/reference/cstdio/printf/的更多信息,請參閱手冊。
P.S.不要將不屬於程序一部分的字符串作爲第一個參數。要打印由用戶輸入的字符串msg,請執行printf(%s,msg);
,否則您的代碼中將出現安全漏洞。
從標準ISO/IEC 9899:1999(E)
7.19.6.1
每種轉換規範由字符%引入。
轉換標識符和它們的含義如下:
% - %字符寫入。沒有參數被轉換。完整的 轉換規範應爲%%。
對於C printf,%
是一個特殊字符,通常表示要在該位置替換的參數:printf("Hello, %s!\n", "world!");
產生「Hello,world」。根據要輸出的數據,可以在%之後添加許多不同的內容。所以這留下了「如果我想打印百分比符號怎麼辦」的問題?
解決方案:使用%%
。
特殊轉義字符\
也是如此。 「\ n」表示打印新行。如果要實際打印的斜線,你必須把它兩次\\
\是C和C++的一部分,%是printf的一部分,儘管它們以相似的方式工作。 – 2014-08-28 06:16:02
%進入格式說明符。例如 。 當我們寫printf("%d",20);
時,它會打印20而不是%d。導致編譯器將%視爲格式說明符。在編譯器的思想中,%的含義有點特殊。 所以如果你想要「%」應該是輸出,那麼你必須寫printf("%%")
。這裏第一個%符號將會抑制%格式說明符的含義,並將輸出%作爲輸出。
感謝您的解決方案。 – 2014-08-28 06:35:17
因爲這就是它所做的。 http://stackoverflow.com/a/1860164/242520 – 2014-08-28 06:08:30
一個逃脫另一個,簡單:) – 2014-08-28 06:10:44
一些快速的方法來打印他們兩個:'printf(「\%\%」);','printf(「 %c','%','%');','printf(「%s」,「%%」);'。 – 2014-08-28 06:15:42