ページ 11

入力した文字のASCIIコードに相当するピリオドを出力するコード

Posted: 2015年10月23日(金) 19:40
by strm
が、以下になります。(『独習C』3.6.2)

コード:

 
#include <stdio.h>
#include <conio.h>

int main(void)
{
	int i;
	char ch;

	for (i = 0; i < 10; i++){
		printf("\n 文字を入力してください。 : ");
		ch = getche();
		printf("\n");
		for (; ch; ch--){
			printf("%c", '.');
		}
	}

	return 0;
}
 

理解できない点は

コード:

 
for (; ch; ch--)
 
なのですが、デクリメントの意味がわかりません。
入力した文字のASCIIコードから1を引いているのですか?
だとして、それに何の意味があるのかがわかりません。
再初期化式の部分を試しにインクリメントさせてみるとピリオドの数が増加するのでそれを防ぐためだとは思うのですが、
正確に言語化できるまで理解が及びません。

あやふやな質問で申し訳ないのですが、どなたかお願いいたします。

Re: 入力した文字のASCIIコードに相当するピリオドを出力するコード

Posted: 2015年10月23日(金) 21:18
by 超初級者
そのfor文は、ch回繰り返す、という意味を持ちます。
ASCIIコードの話はいったん横に置いて、
chが例えば5の場合について、
ご自分がコンピュータになったつもりで
動きを確認してみてください。

Re: 入力した文字のASCIIコードに相当するピリオドを出力するコード

Posted: 2015年10月24日(土) 00:47
by box
strm さんが書きました: 理解できない点は

コード:

 
for (; ch; ch--)
なのですが、デクリメントの意味がわかりません。
入力した文字のASCIIコードから1を引いているのですか?
だとして、それに何の意味があるのかがわかりません。

コード:

    for (; ch; ch--)
このfor文に入った時点で、chはASCIIコードというよりは「繰り返す回数」という意味を持つようになります。

Re: 入力した文字のASCIIコードに相当するピリオドを出力するコード

Posted: 2015年10月24日(土) 20:32
by strm
頂いた言葉の意味が解らずウンウン唸っていたのですが、さきほど答えが出ました。
つまり一度ループするごとにchに格納されている数字を1ずつ減らしていき、ch=0(偽)でループを終わらせる、という意味だったのですね。