while文の(1)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
サブマリン砲

while文の(1)

#1

投稿記事 by サブマリン砲 » 12年前

#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)

#2

投稿記事 by サブマリン砲 » 12年前

すいませんもう一つ質問をします・・

sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?

derok
記事: 51
登録日時: 12年前

Re: while文の(1)

#3

投稿記事 by derok » 12年前

一言で言うと無限ループですね。
C言語では0がFALSE(偽)、0以外ならTRUE(真)となります。
で、while文は()の中がTRUEである限り続くので、
無限ループとなります。
サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・
sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
何故無限ループから抜けるか、ということでしたら、
break文はこのループから抜けると言う意味です。

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

Re: while文の(1)

#4

投稿記事 by box » 12年前

サブマリン砲 さんが書きました:

コード:

		sum = sum + p;
sumの初期値は0になっています。
pが例えば60だとすると、右辺では0に60を加えています。
左辺では、その結果(60)を新たなsumにしています。
この時点で、sumは60になっています。
次に、pが90だとします。
右辺では、60に90を加えています。
左辺では、その結果(150)を新たなsumにしています。
よって、この時点では、sumは60と90の合計である150になります。
以下、同様です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
海Sea
記事: 102
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: while文の(1)

#5

投稿記事 by 海Sea » 12年前

サブマリン砲 さんが書きました:#include<stdio.h>

何故Pの値が反映されているのでしょうか?
知っていると思いますが、scanfはキーボードからの出力なので
キーボードで100と打てば、Pの値は100となりますし、
60と打てば60になります。
なので、999と打ち込めばbreakによりループを抜けます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: while文の(1)

#6

投稿記事 by softya(ソフト屋) » 12年前

サブマリン砲 さんが書きました:すいませんもう一つ質問をします・・

sum = sum + pとありますが、
なぜこれでPの値が反映されてたされるのでしょうか?
この質問で心配なのは、=を数学の=と同じに考えていないかです。
=の代入の機能を理解されていますでしょうか?

右辺の計算結果を左辺の変数に代入するのが=の機能です。
誤解を避けるために := と言う書き方を採用したPascalという言語が有るぐらいですので=の誤解が多いのですが、誤解されていないなら良いのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

サブマリン砲

Re: while文の(1)

#7

投稿記事 by サブマリン砲 » 12年前

みなさん、回答大変ありがとうございます。

while文とかも最初は難しいかなと思ったのですが、
よくよく考えたら簡単かもしれません。

=に関しては、意味の解釈を勘違いしないように
十分注意したいと思います。

閉鎖

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