首頁 >後端開發 >C++ >C 的「printf」和「scanf」中的「%i」和「%d」格式說明符之間的主要差異是什麼?

C 的「printf」和「scanf」中的「%i」和「%d」格式說明符之間的主要差異是什麼?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-03 00:44:09574瀏覽

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

理解格式說明符%i 和%d

使用格式化輸入/輸出函數(如printf 時)和scanf,格式說明符在控制類型方面起著至關重要的作用要列印或讀取的資料。其中,說明符 %d(整數)和 %i(整數)值得仔細考慮。

printf 中的使用

對於輸出操作,沒有功能差異在 %d 和 %i 之間。兩者都會輸出一個帶符號的十進制整數。例如,使用 %d 或 %i 與整數值 100 將產生字串「100」。

scanf 中的用法

但是, %d 和 %i 在輸入操作中變得明顯。 %d 嚴格掃描帶符號的十進制整數,%i 支援十進制、十六進制和八進制格式。

  • 十進位(預設): %d 和%i 都接受十進位數字序列(例如123、 -45).
  • 十六進制: 若前綴為「0x」(例如0x123),%i允許以十六進位格式輸入。另一方面,%d 會將「0x」視為整數字串的一部分。
  • 八進位: 類似地,如果前綴為「0」(例如 033),%i 支援八進位輸入)。相反,%d 會將「033」解釋為十進制整數。

為了說明差異,請考慮以下範例:

scanf("%i", &number);

如果使用者輸入「033」 , %i 將其解釋為八進制數並將值27 分配給變數「 number”,而%d 將分配33。

以上是C 的「printf」和「scanf」中的「%i」和「%d」格式說明符之間的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn