簡體   English   中英

使用int變量作為char變量可以嗎?

[英]is using int variables as char variables OK?

所以我的問題是為什么有些人將int變量用作char變量。 例子

int main()

{

 int i;

 scanf("%c",&i);

printf ("%c",i);

}

提前致謝

C的char是整數類型。 它的(數字)值最常用於表示字符,但這是另一回事。

您可以安全地使用int類型的變量來保存char類型范圍內的值。 您可以將char分配給int或將char傳遞給需要int的函數,而無需強制轉換和更改值。

在某些地方,有意使用int代替char來表示字符。 規范的情況可能是標准庫的getc()fgetc()getchar()函數,除了每個可能的char值之外,它們還需要一個int的范圍才能表示EOF 同樣,出於歷史原因,其他一些函數聲明int參數以接受預期為char類型的數據; memset()是其中比較知名的一種。

另一方面, 指向 intchar 指針 不可互換。 正如其他人指出的,由於這個原因,您的scanf()調用會產生未定義的行為。

一般來說,除非有充分的外部驅動原因(例如需要處理getchar()的返回值getchar() ,否則應使用char而不是int來表示字符數據。 更一般地說,正確地匹配數據類型,仔細考慮允許在哪里執行類型轉換。

這個 -

scanf("%c",&i);

傳遞了錯誤的參數( %c需要char的地址)。它將調用未定義的行為

暫無
暫無

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

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