ページ 1 / 1
while文の(1)
Posted: 2013年5月08日(水) 01:34
by サブマリン砲
#include<stdio.h>
int main(){
/*sum:合計点,p:点数 */
int sum = 0, p;
while (1) {
printf("点数(999で終了)-----");
scanf("%d", &p);
if(p == 999)
break;
sum = sum + p;
}
printf("合計点は%d点です\n", sum);
return 0;
}
whileの( )の式の中に書いてある1というのは一体何を表しているのでしょうか?
普通はi > 5とかなっているのですが・・・
回答お願いします。
Re: while文の(1)
Posted: 2013年5月08日(水) 01:37
by サブマリン砲
すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
Re: while文の(1)
Posted: 2013年5月08日(水) 01:58
by derok
一言で言うと無限ループですね。
C言語では0がFALSE(偽)、0以外ならTRUE(真)となります。
で、while文は()の中がTRUEである限り続くので、
無限ループとなります。
サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
何故無限ループから抜けるか、ということでしたら、
break文はこのループから抜けると言う意味です。
Re: while文の(1)
Posted: 2013年5月08日(水) 06:44
by box
sumの初期値は0になっています。
pが例えば60だとすると、右辺では0に60を加えています。
左辺では、その結果(60)を新たなsumにしています。
この時点で、sumは60になっています。
次に、pが90だとします。
右辺では、60に90を加えています。
左辺では、その結果(150)を新たなsumにしています。
よって、この時点では、sumは60と90の合計である150になります。
以下、同様です。
Re: while文の(1)
Posted: 2013年5月08日(水) 08:28
by 海Sea
サブマリン砲 さんが書きました:#include<stdio.h>
何故Pの値が反映されているのでしょうか?
知っていると思いますが、scanfはキーボードからの出力なので
キーボードで100と打てば、Pの値は100となりますし、
60と打てば60になります。
なので、999と打ち込めばbreakによりループを抜けます。
Re: while文の(1)
Posted: 2013年5月08日(水) 10:50
by softya(ソフト屋)
サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
この質問で心配なのは、=を数学の=と同じに考えていないかです。
=の代入の機能を理解されていますでしょうか?
右辺の計算結果を左辺の変数に代入するのが=の機能です。
誤解を避けるために := と言う書き方を採用したPascalという言語が有るぐらいですので=の誤解が多いのですが、誤解されていないなら良いのですが。
Re: while文の(1)
Posted: 2013年5月08日(水) 11:17
by サブマリン砲
みなさん、回答大変ありがとうございます。
while文とかも最初は難しいかなと思ったのですが、
よくよく考えたら簡単かもしれません。
=に関しては、意味の解釈を勘違いしないように
十分注意したいと思います。