2017-03-17 135 views
-6
#include<stdio.h> 
int main() 
{ 
char ch = '1' ; 
printf ("\n%d %c\n", ch, ch) ; 
return 0; 
} 

#include<stdio.h> 
int main() 
{ 
char ch = 1 ; 
printf ("\n%d %c\n", ch, ch) ; 
return 0; 
} 

這兩個char聲明的區別是什麼?哪一個是正確的?這兩個char聲明有什麼區別?哪一個是正確的?

+1

正確的是什麼情況? –

+0

如果您希望兩者都得到相同的結果,請執行'char ch = 49'(因爲49是'1'的ASCII碼) – Dominique

+0

更好的學習方法是運行代碼。或者,更好的方法是獲取一本'c'書並學習。 – KevinDTimm

回答

3

的第一段代碼分配字符'1',其具有ASCII值爲49.將其作爲字符打印將產生1,而作爲數字打印將產生49

第二段代碼分配值1.將它打印爲字符會產生一個帶有實現定義表示的不可打印字符,而將其打印爲數字將產生1

至於哪個「正確」,取決於你想如何使用它。

2

第一個,

char c = '1'; 

是指派的1 (decimal 49)第二個中的ASCII值,

char c = 1; 

被分配ASCII值1 (decimal 1, SOH "start of heading")

因此,現在,不要問哪一個是正確的,你可以決定,因爲兩者都是有效的,所以哪個是正確的取決於你的意圖。

+0

當然,「1」的值是實現定義的,不一定是ASCII。 –

0

有一個ascii表,你應該注意char '1' != 1

在十進制值'1'49

正確的方法是使用單引號爲所需的炭像這樣

char c = 'a'