簡體   English   中英

讀取整數作為字符並打印為整數

[英]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("%c", &i);

導致不確定的行為 您為%c轉換說明符提供了無效的參數類型。

%c希望將一個指向字符類型的指針作為相應的參數,但是您要提供一個指向整數的指針。

使用錯誤的格式說明符將導致未定義的行為。 在這里,您正在做同樣的事情。

你應該這樣看

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.

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