簡體   English   中英

scanf(或)printf中的格式說明符錯誤

[英]Wrong format specifiers in scanf (or) printf

至於printf函數,我從很少的參考和實驗中了解以下內容。

  • 當我們嘗試使用用於float(或)double的格式說明符打印整數值時,反之亦然,這種行為是不可預測的
  • 但是可以使用%c來打印等價於整數值的字符。 也可以使用%d來打印字符的ASCII值(整數表示)。

類似地,如果格式說明符不匹配並且傳遞給scanf的爭論不匹配 ,則scanf的行為是什么。 標准是否定義了它?

變量參數(與省略號匹配的參數, ... )是默認提升的 這意味着所有較短的整數類型都被提升為int (或者無符號,視情況而定)。 整數和字符之間沒有區別( 我相信 )。 printf %d%c之間的差異僅僅是格式化值的方式。

scanf是一個不同的魚。 你傳遞的所有參數都是指針 指針之間沒有默認促銷,因此傳遞與指針類型匹配的確切格式說明符至關重要。

在任何一種情況下,如果您的格式說明符與提供的參數不匹配(例如,將int *傳遞給printf%p ),結果是未定義的行為 ,這比“不可預測”更糟糕 - 這意味着您的程序簡直是形象不對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM