我知道這聽起來並不高效,但我正在尋找一種方法來記住所有printf
調用的格式代碼。 %s
,%p
,%f
都很明顯,但我不明白%d
來自哪裏。 %i
已被別的東西佔用了嗎?爲什麼%d代表整數?
65
A
回答
83
它代表「decimal」(基數10),而不是「整數」。您可以使用%x
在hexadecimal(基數16)和%o
中打印以打印octal(基數8)。一個整數可以在任何這些基數中。
在printf()
,你可以使用%i
的代名詞%d
,如果你喜歡,而不是表示「整數」,「小數」,但%d
一般是優選的,因爲它是更具體。
在輸入時,使用scanf()
,您也可以同時使用%i
和%d
。 %i
表示將其解析爲任意基數(八進制,十六進制或十進制,如0
或0x
前綴所示)中的整數,而%d
表示將其解析爲十進制整數。
這裏的所有的人的例子在行動:
#include <stdio.h>
int main() {
int out = 10;
int in[4];
printf("%d %i %x %o\n", out, out, out, out);
sscanf("010 010 010 010", "%d %i %x %o", &in[0], &in[1], &in[2], &in[3]);
printf("%d %d %d %d\n", in[0], in[1], in[2], in[3]);
sscanf("0x10 10 010", "%i %i %i", &in[0], &in[1], &in[2]);
printf("%d %d %d\n", in[0], in[1], in[2]);
return 0;
}
所以,如果你想輸入的基礎依賴於前綴,你應該只使用%i
;如果輸入基礎應該固定,則應使用%d
,%x
或%o
。特別是,領先的0
使您處於八進制模式的事實可以吸引您。
+0
感謝您解釋爲什麼%我行事的方式。 – clementine
7
http://en.wikipedia.org/wiki/Printf_format_string似乎是說,它是小數,我已經猜到
d,i
INT作爲一個符號十進制數。 '%d'和'%i'是 輸出的同義詞,但與scanf()一起用於輸入時會有所不同(使用%i時 會將數字解釋爲十六進制(如果它前面有0x)和 八進制0.)
相關問題
- 1. 在java -D中D代表什麼?
- 2. orgnlList:for(整數:數字)這代表什麼?
- 3. 爲什麼%s比python中的整數替換%d更快?
- 4. 爲什麼需要「整數表達式」?
- 5. 爲什麼\ d \ +或\ d +在這裏不等於\ d *?
- 6. 爲什麼sscanf的需要及爲%d整數但不能%s的字符串
- 7. 爲什麼「{1:'a',True:'b',1.0:'c',1.00:'d'}」評估爲「{1:'d'}」?
- 8. 爲什麼我應該用「%d」代替「%i」作爲C中整數的轉換說明符?
- 9. 什麼是gsub(/(\ d {4})\ /(\ d \ d)\ /(\ d \ d)\ /(。*)/,'\ 1- \ 2- \ 3- \ ) 意思?
- 10. 爲什麼printf(「%d%d%d」,++ i,i,i ++)是未定義的行爲?
- 11. tr -d [=,=]做什麼?
- 12. \ W \ D在shell腳本中代表什麼?
- 13. 爲什麼輸入D代碼時MonoDevelop 2.9.4錯誤?
- 14. 爲什麼用-D代替-P來激活maven配置文件?
- 15. 什麼是(D/NSD:curPkgName不在列表中)?
- 16. D中的/ +和+ /表示什麼?
- 17. %d在struct.pack中表示什麼?
- 18. 爲什麼array [d] 5的值?
- 19. 爲什麼Bigdecimal(double d)構造還在?
- 20. 爲什麼在D中使用靜態?
- 21. 爲什麼在D中使用@property?
- 22. 爲什麼\ d *匹配職位?
- 23. 爲什麼最終輸出「B-D」
- 24. 爲什麼D中沒有`isIn`特徵?
- 25. 爲什麼「printf(」%d「,'0 /');」是12335?
- 26. 「npm -d install」中的「-d」是什麼?
- 27. ** D是什麼意思在string.format(** D)?
- 28. 這個正則表達式是什麼意思:\\ d {3} - \\ d {4}。*
- 29. 這個正則表達式應該做什麼?^[\ d \ d {1,} $
- 30. 正則表達式中的(\ d +)/(\ d +)是什麼?
我最好的猜測是十進制 –
是的,但是,這是一種諷刺+1,有趣的問題。 – Daniel
雖然這不是一個真正的編程問題,我傾向於關閉這些:) –