首頁 >後端開發 >C++ >C 中的 %i 與 %d:這些格式說明詞何時不同?

C 中的 %i 與 %d:這些格式說明詞何時不同?

Patricia Arquette
Patricia Arquette原創
2024-12-03 13:37:12436瀏覽

%i vs. %d in C: When Do These Format Specifiers Differ?

格式化I/O 函數中格式說明符%i 與%d 之間的差異(printf / scanf)

格式化I/O 函數,如printfscanf 利用轉換說明符來控制資料在輸入或輸出期間的表示方式。在這些說明符中,%i 和 %d 通常用於整數。

輸出的用法(%i 與 %d)

用作格式說明符時輸出中,%i 和 %d 沒有區別。兩者產生相同的結果。它們表示十進制格式的整數值。

輸入說明符

但是,當使用%i 和%d 作為輸入說明符時,就會出現差異(在scanf 中) )。主要差異在於:

  • %d:指定有符號十進位整數。它期望輸入為以 10 為基數的數字(十進制)。
  • %i:預設行為類似 %d(有符號十進位整數)。但是,它還有一個附加功能:它允許以其他基數輸入,例如:

    • 十六進位:前面帶有“0x”,它將輸入解釋為十六進位數。
    • 八進制:前面帶有“0”,它將輸入解釋為八進制

實際示例

為了說明差異,請考慮輸入字串“033”。

  • 使用 %d:將其視為有符號小數整數,結果為值 33。
  • 使用 %i:由於輸入以「0」開頭,因此它會將其識別為八進制數。八進制的“033”值為 27。

總之,雖然 %i 和 %d 對於輸出的行為相似,但它們對於輸入的行為不同。 %i 透過允許十六進制和八進制輸入來提供擴展功能,而 %d 嚴格限制為帶符號的十進制輸入。

以上是C 中的 %i 與 %d:這些格式說明詞何時不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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