C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#での無限ループと処理内容について。


(過去ログ 101 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■60667 / inTopicNo.1)  C#での無限ループと処理内容について。
  
□投稿者/ しぃー (1回)-(2011/07/14(Thu) 13:22:10)

分類:[C#] 

C#の例外処理とbool型の使い方についてアドバイスお願いします。
無限ループwhile(ture)はわかるのですが、bEndがtrueにならない限り回り続けるのがわかりません。。
よろしくお願いします。

下記のコードでbool bEnd = false;を設定していて、
if (bEnd)
break;
でbEndがtrueになったらループを抜けるのはどうしてなのでしょうか?

私の考えだと、if (bEnd == true)
break;
だとループを抜けると思いましたが、
このコードでif (bEnd)
break;
何故ループを抜けるのかが分からない状況です。

初歩的な質問になってしまいますがアドバイスよろしくお願いします。

public static void Main()
{
string strWarusu;
int x;
bool bEnd = false;

while(true) {
Console.Write("割る数---");
strWarusu = ReadLine();

try {
x = int.Parse(strWarusu);
Console.WriteLine("10/{0} = {1}", x, 10/x);
}
catch (Exception e) {
Console.WriteLine(e.Message);
}
finally {
Console.WriteLine("続けますか(Y/N)---");
if (Console.ReadLine()[0] == 'N')
bEnd = true;
}
if (bEnd)
break;
}


引用返信 編集キー/
■60668 / inTopicNo.2)  Re[1]: C#での無限ループと処理内容について。
□投稿者/ 魔界の仮面弁士 (2250回)-(2011/07/14(Thu) 13:47:08)
2011/07/14(Thu) 13:55:18 編集(投稿者)
No60667 (しぃー さん) に返信
> 無限ループwhile(ture)はわかるのですが、
ture → true

> strWarusu = ReadLine();
strWarusu = Console.ReadLine(); ではなく?

> if (Console.ReadLine()[0] == 'N')
これだと、何も入力せずに Enter された場合にエラーになりますよ。

> 私の考えだと、if (bEnd == true)
それでも良いですが、結局は同じ意味です。このことは
 if( x > 0 )
という処理を
 if( (x > 0) == true )
と書ける事に似ています。

「bEnd == true」は、bEnd が true の場合に「true」を返し、
                    bEnd が falseの場合に「false」を返します。

結果として、
 if (bEnd)
 if (bEnd == true)
 if (true == bEnd)
 if ((bEnd == true) == true)
などはすべて同じ意味を持ちます。

引用返信 編集キー/
■60670 / inTopicNo.3)  Re[2]: C#での無限ループと処理内容について。
□投稿者/ 逆運の覇者 (33回)-(2011/07/14(Thu) 15:00:33)
しぃーさんは 『if (条件式) 』という考えがあるから不思議に感じるのではないでしょうか。
『if (true か false)』なんだ、と考え方を変えてください。


bEnd == true や x > 0 のような条件式もtrue か falseのどちらかを返しているのです。
だから
bool b = (bEnd == true);
というプログラムが書けます。
つまり、if ( )の中に何を書こうとも、条件式を解けば if (true) か if (false)になるのです。


条件式を解いて、最終的に if (true) であれば実行されるし、
if (false) であれば実行されません。
引用返信 編集キー/
■60674 / inTopicNo.4)  Re[2]: C#での無限ループと処理内容について。
□投稿者/ しぃー (2回)-(2011/07/14(Thu) 15:31:19)
魔界の仮面弁士 さん

ご指摘とアドバイスをいただきましてありがとうございました。

まだまだ、至らぬ点ばかりでして頭も固く先に進むにも大変苦労をしてます。。

確かに同じことですね。

if ( )の中に何を書こうとも、条件式を解けば if (true) か if (false)になるのです。
とのアドバイスにようやく兆しが見えてきました。

アドバイスいただきまして本当にありがとうございました。

参考にさせていただきます。
引用返信 編集キー/
■60675 / inTopicNo.5)  Re[3]: C#での無限ループと処理内容について。
□投稿者/ しぃー (3回)-(2011/07/14(Thu) 15:37:55)
逆運の覇者さん


貴重なアドバイスをいただきましてありがとうございました。

アドバイスいただいた条件式を解いて、最終的に if (true) であれば実行されるし、
if (false) であれば実行されません。
との言葉にとても分かりやすく前に進めるようになりこんな初歩的な知識しかない私に、
アドバイスしていただきまして本当にありがとうございました。。

まだまだ先は長いですが、頑張っていければと思います!



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -