[英]Reading integer as character & printing it as integer
對於輸入65 ,此摘要的輸出為32566 。 請解釋其背后的概念。
#include<stdio.h>
int main()
{
char ch;
int i;
scanf("%c", &i);
printf("%d",i);
return 0;
}
使用錯誤的格式說明符將導致未定義的行為。 在這里,您正在做同樣的事情。
你應該這樣看
scanf("%d",&i); // because you are reading an integer.
根據你的情況寫
scanf("%c", &i);
您正在傳遞一個int變量的地址,但是%c
應該在這里獲得一個char變量的地址。 這種差異給出了不確定的行為。
為了給你一個更好的主意- scanf
預期的格式speicifer和地址。 從地址開始, scanf()
無法理解它需要解析哪種數據。 但是是的,格式說明符說明了這一點。 因此,在這種情況下,傳遞錯誤的格式說明符會造成混亂。
您忘記初始化變量“ i”。 比程序正常運行
您的程序讀取字母“ A”的ASCII碼。 如果您在'%c'中更改格式符號'%d',則輸出為'A'。
如果將變量i初始化為0。如果輸入'A',則輸出為65
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.