[英]How does %d format specifier work?
#include<stdio.h>
main()
{
char x ;
x = 'a' ;
printf("%d",x);
}
在這個%d格式說明符中應該讀取4個字節是整數格式說明符,但x是一個字符僅存儲在1個字節中。 所以剩下的3個字節應該有垃圾值,輸出應該是隨機的。 但輸出始終為97,這是'a'的ASCII值。 任何人都可以告訴格式說明符如何工作?
函數參數與函數的聲明參數類型不匹配(即因為函數允許變量參數,如printf
,或者因為沒有提供函數原型)經歷默認參數提升 (參見C11 6.5.2.2),將char
值轉換為int
或unsigned int
的值。 因此,通過a
對printf
相匹配的要求%d
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.