簡體   English   中英

字符類型給出一個 int——這個 int 是什么?

[英]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]

你確實得到了一個錯誤,但你忽略了它。

當您鍵入ascanf()被告知期待 integer 時,它返回 0 表示它未能將任何輸入轉換為數字(但有數據要處理;它沒有遇到 EOF)。 您鍵入的字符仍在輸入緩沖區中,等待后續 I/O 操作處理。

您傳遞給scanf()的變量x在調用后仍未初始化——它沒有被scanf()修改,因為轉換失敗。 從技術上講,打印諸如x之類的未初始化變量會調用未定義的行為,但實際上,您會得到一些准隨機值 output。

如果你已經初始化了變量,你會得到 output 為 0。它不會給出錯誤,因為 char 只是一個 8 位 integer 可以適應 int 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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