質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

5回答

1139閲覧

入出力

reotantan

総合スコア295

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2015/08/31 14:41

'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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

文字リテラル、文字コードの関係ですね。
0 と '0' では全く意味が違います。
0+1=1 ですが
'0'+1='1'です

0=0
'0'=48 です

投稿2015/09/03 01:11

MasaakiIrie

総合スコア1021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/09/03 03:21

解説ありがとうございます!
guest

0

このプログラムは数値と文字コードの
対応表を表示したいのだとおもいます。

リテラルしていますので、
'0'は、数値の 0 ではなくて、
ゼロという文字の値になります。
ゼロの文字コードの値は 48 ですので、
これに 1 を足すことになり、
49 という計算結果を返します。

ちなみに、
49 は 1 の文字コード、
50 は 2 の文字コード、
・・・
(9まで連続します。)です。

「ASCII文字コード表」
で検索すると納得できるとおもいます。

投稿2015/09/01 03:36

umeaji

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/09/03 03:22

文字コードの知識不足でした
guest

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

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2015/08/31 15:07

上記for文は以下のwhile文と等価です。 i= 0; while( i < 10 ){ printf(" '%d'= %d\n", i, '0'+i); i++; }
reotantan

2015/08/31 15:23

すいませんすっかり見落としていました。’0’+i(最初は0)→’0’+1は何を意味するのでしょうか? ’0’が48、これに1をたして49という事ですが、どういう原理なのでしょうか?
cateye

2015/08/31 18:25 編集

>何を意味するのでしょうか? えっと、いまいち聞かれている事が分からないのですが・・・ ’0’+1という式は、計算時に算術型変換が行われ、charがintに昇格し char('0')+int(1) → int(48)+int(1)となります。 従って、結果として49という結果になるのですd^^
reotantan

2015/09/03 03:21

そういう事でしたか、ありがとうございます
guest

0

以前の質問であったように、
for(i=0;...)と書かれていたらループ一周目はi=0です。

投稿2015/08/31 14:52

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/31 15:24

見落としでした、すいません。 私の文字コードの理解が浅いようです
guest

0

'0'1 を足すと 49 になるようですけど?

https://ideone.com/0Yh9vf

なぜ

'0'に1を足すとなんで48になるのでしょうか。

と思われたのでしょうか?

投稿2015/08/31 14:49

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reotantan

2015/08/31 15:23

すいません、見落としていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問