理解轉換說明符的細微差別:格式化IO 函數中的%i 與%d
在格式化輸入/輸出領域( IO)函數如printf和scanf,轉換說明符在指導輸入或輸出的格式方面起著關鍵作用。在這些說明詞中,%i 和 %d 經常引起人們對其異同的疑問。
輸出:統一存在
當用於輸出操作時,例如與printf,%i 和 %d 的行為相同。它們始終以十進制格式表示整數。例如,以下程式碼片段示範了它們相同的輸出:
輸入:獨特行為
但是,當使用scanf 或類似函數部署在輸入操作中時, %i 和%d 表現出明顯的差異。 %d 僅將整數掃描為有符號十進位數。相反,%i 保留其十進位解釋,但也包含十六進位(以 0x 為前綴)和八進位(以 0 為前綴)輸入。
為了說明這種區別,請考慮以下範例:
如果使用者輸入033,scanf 會將其解釋為帶有%i 的27(因為它將其視為八進制)並且33 和%d(嚴格來說是十進制)。
總結...
雖然 %i 和 %d 在格式化 IO 中具有相似的用途,但它們的區別在於輸入操作期間的行為。 %d 僅限於帶符號的十進制輸入,而 %i 可以無縫處理十進制和其他基本格式(十六進制和八進制)。這種理解對於根據程式的特定需求自訂輸入操作至關重要。
以上是C 格式化輸入/輸出函數中「%i」和「%d」之間的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!