R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

bool な話

意外と知られていないのかな?・・・と思ったので、取りあえず述べてみます。

ちなみに、

return (i == 5);

を見て

だから何?

 

と思った人は、読んでもつまらない話です。


if (i > 5) {
  ruturn true;
}
else {
  return false;
}


例えば上記のコードがあったとします。

これは、以下のように書くことができます。


return (i > 5);


何故なら、


bool b = (i > 5);


とすると、b に true か false が入るからです。

つまり、(i > 5) の比較演算結果は「どちらが大きいか?」ではなく、常に真(true)か偽(false)を返すのです。

ちなみに、以下は同じ意味になります。


return (i > 5);

return !(i <= 5);


これを応用すると、こんな表現も思いつきます。


while(true) { Method(); }

while(false) { Method(); }

if (true) { Method(); }

if (false) { Method(); }

if (true & false) { Method(); }

if (true && false) { Method(); }

if (true || false) { Method(); }

bool b = (i > 5);
if (b) { Method(); }


比較演算は、条件を得るのではなく、比較演算を行った結果を取得すると考えるとわかりやすいかも知れません。

投稿日時 : 2007年3月6日 11:56

Feedback

# forループ 2007/03/06 12:59 .COM -どっとこむ-

forループ

# forループ 2007/03/06 13:06 .COM -どっとこむ-

forループ

# re: bool な話 2007/03/06 17:57 ダッチ

i の値が何なのかすっごい気になります。
5 より大きいとは思うのですが、
6? 10? 5419?

# re: bool な話 2007/03/06 18:29 渋木宏明(ひどり)

return は式じゃなくて文なので、カッコで括らない人です>じぶん

# re: bool な話 2007/03/07 13:45 とっちゃん

そういえば、昔(会社に入ったばかりの頃)は、カッコで括ってたけど、いつのまにか括らないようになってるなぁ...
どこで変わったのかな?C++にいったときかなぁ?

なので、おいらも括らない派w

# re: bool な話 2007/03/07 17:21 R・田中一郎

ダッチ さん

>i の値が何なのかすっごい気になります。

確かに、一番最後は、i の値を明示しなければ、Method() が実行されるのかどうかわかりませんね。

>5 より大きいとは思うのですが、

何故そう思ったのでしょう?
元記事では、5 より小さい場合もありますよね。

-------------------------------------------------
渋木宏明(ひどり) さん

>return は式じゃなくて文なので、カッコで括らない人です>じぶん

Basic の場合は、代入のイコールと比較のイコールが共に、 = のみなので、わかりやすく区別するために、比較の場合は括弧を用いていました。
そんな訳なので C# でも、その書き方になってしまいました。

他にも括弧は、良く使います。

string s = (
  "こんな" +
  "書き方も" +
  "しちゃいます" +
  "wwww"
);

this.とても長いプロパティ名なので何とかしたい訳だが = (
  this.更に値を取得するためのメソッドも長い訳だが()
);

-------------------------------------------------
とっちゃん

>そういえば、昔(会社に入ったばかりの頃)は、カッコで括ってたけど、いつのまにか括らないよ

深いです。
僕も、昔(若かりし頃)は、カッコばかりつけていました。(遠い目)
とっちゃんは、もちろん今も格好良いです。

僕も基本的には、 return の後には括弧をつけないのですが、比較の時だけは付けるようにしています。

# re: bool な話 2007/03/07 23:02 ダッチ

> bool b = (i > 5);
> とすると、b に true が入るからです。
と書いてありましたから i は 5 より大きいんだなと思いました。

> 以下の中で Method() が実行されないコードはいくつでしょう?
4 つかな。

# re: bool な話 2007/03/08 11:50 R・田中一郎

>> とすると、b に true が入るからです。
>と書いてありましたから i は 5 より大きいんだなと思いました。

本当ですね。
この説明はよろしくないです。
早速修正しておきます。

タイトル  
名前  
Url
コメント