アプリ版:「スタンプのみでお礼する」機能のリリースについて

#include <stdio.h>
int main()
{
int syori_kaisuu = 0;
int kaisuu = 5;
printf("kaisuu >");
fflush(stdout);
scanf("%d", &kaisuu);
while(syori_kaisuu < kaisuu){
printf("KURIKAESHI %d\n", syori_kaisuu);
syori_kaisuu = syori_kaisuu + 1;
}
return 0;
}

http://codepad.org/ ・・で以上、コンパイルすると
 以下が実行結果となります。

kaisuu >KURIKAESHI 0
KURIKAESHI 1
KURIKAESHI 2
KURIKAESHI 3
KURIKAESHI 4

 それで
 実行結果の
 kaisuu >KURIKAESHI 0のKURIKAESHI 0って何でしょうか!?
 
 何でプログラム上”KURIKAESHI 0”が現るのですか!?
 
 いきさつが分かりません!?
 宜しくお願いします。

A 回答 (1件)

ちゃんとしたコンパイラと実行環境用意した方がいいと思いますけどね……。



> 実行結果の
> kaisuu >KURIKAESHI 0のKURIKAESHI 0って何でしょうか!?

>printf("kaisuu >");

>printf("KURIKAESHI %d\n", syori_kaisuu);
の出力結果です。

本来なら
>scanf("%d", &kaisuu);
で入力待ちになるんでしょうが……
http://codepad.org/
では入力待ちになってくれないんでしょうね。
まぁ、ブラウザ経由で動作しているのにどう入力待ちしろと?とは思いますが…。

>何でプログラム上”KURIKAESHI 0”が現るのですか!?

なんでって……
>printf("KURIKAESHI %d\n", syori_kaisuu);
の出力結果です。

syori_kaisuuは最初に0で初期化しているじゃないですか。

>いきさつが分かりません!?

scanf()が期待通りに動作しないからそのまま突っ走っているだけです。
kaisuuの初期化が無かったら悲惨なことになっていた可能性もあるでしょう。
# およそ2分の1の確率で"KURIKAESHI 0"の表示すらなかった…かも知れませんけど。
# コンパイラの既定がint=signed intだったら…ですけどね。
    • good
    • 0
この回答へのお礼

御回答ありがとうございました。
A アンス:syori_kaisuuは最初に0で初期化している。
 問題を準追ってよく読むと
 ループ処理で 
while(syori_kaisuu < kaisuu){
・・
syori_kaisuu = syori_kaisuu + 1;
 ゆえに
 「int syori_kaisuu = 0;~syori_kaisuu = 5」の範囲が
 以下に現れて・当然 KURIKAESHI 0も含まれるので・・
 
KURIKAESHI 0
KURIKAESHI 1
KURIKAESHI 2
KURIKAESHI 3
KURIKAESHI 4

 変な質問をしてすみません! 
 またするかもしれませんが!!??
 宜しくお願いします。

お礼日時:2014/08/01 04:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!