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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
strm
記事: 6
登録日時: 8年前

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

#1

投稿記事 by strm » 8年前

が、以下になります。(『独習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を引いているのですか?
だとして、それに何の意味があるのかがわかりません。
再初期化式の部分を試しにインクリメントさせてみるとピリオドの数が増加するのでそれを防ぐためだとは思うのですが、
正確に言語化できるまで理解が及びません。

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

超初級者
記事: 56
登録日時: 9年前

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

#2

投稿記事 by 超初級者 » 8年前

そのfor文は、ch回繰り返す、という意味を持ちます。
ASCIIコードの話はいったん横に置いて、
chが例えば5の場合について、
ご自分がコンピュータになったつもりで
動きを確認してみてください。

box
記事: 2002
登録日時: 13年前

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

#3

投稿記事 by box » 8年前

strm さんが書きました: 理解できない点は

コード:

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

コード:

    for (; ch; ch--)
このfor文に入った時点で、chはASCIIコードというよりは「繰り返す回数」という意味を持つようになります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

strm
記事: 6
登録日時: 8年前

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

#4

投稿記事 by strm » 8年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る