首頁 > 後端開發 > C++ > C 格式化 I/O 中的 %i 與 %d:有什麼不同?

C 格式化 I/O 中的 %i 與 %d:有什麼不同?

Linda Hamilton
發布: 2024-12-07 12:49:13
原創
625 人瀏覽過

%i vs. %d in C's Formatted I/O: What's the Difference?

%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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板