'0'に1を足すとなんで48になるのでしょうか。
JISコードでは0が48のはず、、、
分かる方教えてください。
int main(void){ int i; printf("EOF=%d\n",EOF ); for(i=0;i<10;i++) printf(" '%d'=%d\n",i,'0'+i ); return 0; } コード
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
文字リテラル、文字コードの関係ですね。
0 と '0' では全く意味が違います。
0+1=1 ですが
'0'+1='1'です
0=0
'0'=48 です
投稿2015/09/03 01:11
総合スコア1021
0
このプログラムは数値と文字コードの
対応表を表示したいのだとおもいます。
リテラルしていますので、
'0'は、数値の 0 ではなくて、
ゼロという文字の値になります。
ゼロの文字コードの値は 48 ですので、
これに 1 を足すことになり、
49 という計算結果を返します。
ちなみに、
49 は 1 の文字コード、
50 は 2 の文字コード、
・・・
(9まで連続します。)です。
「ASCII文字コード表」
で検索すると納得できるとおもいます。
投稿2015/09/01 03:36
総合スコア101
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
普通に49になりますが、実行結果を見せてもらえますか?
C
1~/test >./a.out 2 '0'= 48 3 '1'= 49 4 '2'= 50 5 '3'= 51 6 '4'= 52 7 '5'= 53 8 '6'= 54 9 '7'= 55 10 '8'= 56 11 '9'= 57 12~/test >cat tst10.c 13#include <stdio.h> 14 15int main( ) 16{ 17 int i; 18 for( i= 0; i < 10; i++ ){ 19 printf(" '%d'= %d\n", i, '0'+i); 20 } 21 22 return 0; 23} 24 25~/test >
投稿2015/08/31 14:59
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/31 15:07
2015/08/31 15:23
2015/08/31 18:25 編集
2015/09/03 03:21
0
投稿2015/08/31 14:49
総合スコア4514
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/03 03:21