[英]Wrong format specifiers in scanf (or) printf
至於printf
函數,我從很少的參考和實驗中了解以下內容。
%c
來打印等價於整數值的字符。 也可以使用%d
來打印字符的ASCII值(整數表示)。 類似地,如果格式說明符不匹配並且傳遞給scanf的爭論不匹配 ,則scanf
的行為是什么。 標准是否定義了它?
變量參數(與省略號匹配的參數, ...
)是默認提升的 。 這意味着所有較短的整數類型都被提升為int
(或者無符號,視情況而定)。 整數和字符之間沒有區別( 我相信 )。 printf
%d
和%c
之間的差異僅僅是格式化值的方式。
scanf
是一個不同的魚。 你傳遞的所有參數都是指針 。 指針之間沒有默認促銷,因此傳遞與指針類型匹配的確切格式說明符至關重要。
在任何一種情況下,如果您的格式說明符與提供的參數不匹配(例如,將int *
傳遞給printf
的%p
),結果是未定義的行為 ,這比“不可預測”更糟糕 - 這意味着您的程序簡直是形象不對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.