[英]Character type gives a int — what is this int?
在 C 程序中,我想輸入一個 int 類型,但是在我運行程序后,我會給出一個字符類型作為輸入,但它沒有收到任何錯誤,它顯示一個 integer。 為什么?
代碼:
#include <stdio.h>
int main(){
int x;
printf("input: ");
scanf("%d", &x);
printf("the output is %d",x);
return 0;
}
編譯后:
input: a
the output is -1225407932
[Program finished]
你確實得到了一個錯誤,但你忽略了它。
當您鍵入a
但scanf()
被告知期待 integer 時,它返回 0 表示它未能將任何輸入轉換為數字(但有數據要處理;它沒有遇到 EOF)。 您鍵入的字符仍在輸入緩沖區中,等待后續 I/O 操作處理。
您傳遞給scanf()
的變量x
在調用后仍未初始化——它沒有被scanf()
修改,因為轉換失敗。 從技術上講,打印諸如x
之類的未初始化變量會調用未定義的行為,但實際上,您會得到一些准隨機值 output。
如果你已經初始化了變量,你會得到 output 為 0。它不會給出錯誤,因為 char 只是一個 8 位 integer 可以適應 int 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.