2017-03-17 9 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のこれらの2つの宣言の違いは何ですか?どちらが正しいか??charのこれらの2つの宣言の違いは何ですか?どちらが正しいか?

+1

どのような状況で修正しますか? –

+0

両方とも同じ結果を得たい場合は、 'char ch = 49'を実行してください(49はASCIIコード '1'です)。 – Dominique

+0

これについてもっと知るには、コードを実行するのが良い方法です。あるいは、もっと良い方法は、 'c'の本をつかんで学ぶことです。 – KevinDTimm

答えて

3

コードの最初の部分が有する文字'1'を割り当てるように所望のcharの単一引用符を使用することですASCII値は49です。これを文字で印刷すると1、数字として印刷すると49となります。

コードの2番目の部分は値1を割り当てます。文字として印刷すると、実装定義の表現で印刷できない文字が出力されます。番号として印刷すると、1が出力されます。

「正しい」とは、どのように使用するかによって異なります。

2

第一

char c = '1'; 

char c = 1; 

ASCII値1 (decimal 1, SOH "start of heading")を割り当てるされ、1 (decimal 49)ASCII値を第二のいずれかを割り当てています。

これで、どちらが正しいかを尋ねる代わりに、両方が有効であるため、決定することになるので、正しいのはあなたの意図に依存します。

+0

もちろん、 '1'の値は実装定義であり、ASCIIである必要はありません。 –

0

ASCIIテーブルがあり、その文字は'1' != 1です。小数値で

'1'49

正しい方法がそう

char c = 'a'

関連する問題