%i 和%d 的格式化IO:詳細比較
使用printf 和scanf 等格式化IO 函數時,了解細微的差異格式說明符之間的關係至關重要。兩個常見的說明詞 %d 和 %i,如果沒有完全掌握它們的不同行為,可能會導致混亂。
輸出:相同的功能
如果 %i 和 % d 用於輸出目的(即在 printf 中),它們之間沒有明顯的區別。兩個說明符都會產生相同的輸出,無論是十進制、十六進制還是八進制。
輸入:區別出現的地方
但是,當使用這些說明符作為輸入時(即在 scanf 中),出現了明顯的區別。 %d 將輸入解釋為有符號十進位格式的整數。這意味著像 -512 這樣的數字將被正確識別並分配負值。
相較之下,%i 預設為十進制解釋,但表現出更靈活的性質。它不僅處理十進制整數,而且在前面有相關前綴時也可以容納十六進制和八進制值。例如,0x1A 將被解釋為十六進位數字,而 023 將被識別為八進位。
實際範例
考慮輸入字串「033」。如果 scanf 使用 %d 讀取它,它會將其視為十進制整數 33。但是,使用 %i,scanf 會將前導 0 識別為八進位前綴,從而將整數 27 分配給變數。
結論
總之,雖然 %i 和 %d 對於格式化 IO 函數的輸出執行類似的操作,但它們表現出不同的輸入行為。 %d 將輸入限制為帶符號的十進制數,而 %i 透過容納十六進制和八進制值提供更多功能。理解這種差異對於 C 程式中準確的輸入處理至關重要。
以上是C 格式化 I/O 中的 %i 與 %d:有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!