[英]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()
是其中比較知名的一種。
另一方面, 指向 int
和char
指針 不可互換。 正如其他人指出的,由於這個原因,您的scanf()
調用會產生未定義的行為。
一般來說,除非有充分的外部驅動原因(例如需要處理getchar()
的返回值getchar()
,否則應使用char
而不是int
來表示字符數據。 更一般地說,正確地匹配數據類型,仔細考慮允許在哪里執行類型轉換。
這個 -
scanf("%c",&i);
傳遞了錯誤的參數( %c
需要char的地址)。它將調用未定義的行為 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.