主にC# な話題です
ふと気になったので
試してみる
var i = 1;Console.WriteLine( i == 1 ? "壱" : i == 2 ? "弐" : i == 3 ? "参" : i == 1 ? "一" : "一杯");
表示されたのは、"一" ではなくて "壱" だった。思ったとおりだった。
投稿日時 : 2008年9月2日 14:07
ぼくも最近知ったんですけど、三項演算子ではなく条件演算子と呼ぶのが正しいそうです。 三項演算子は ? : の1つしかないのでそう呼ばれてしまってますけど。
Wikipedia - 条件演算子 http://ja.wikipedia.org/wiki/%3F:
>上から評価される ガードを持った言語では割と一般的な振る舞いですね. http://ja.wikipedia.org/wiki/Guarded_Command_Language http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%BC%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
だまされちゃいけません。 左です! ひ だ り !
[C/C++]三項演算子は上から評価されてた!
だまされるところでしたww
アキラ さん >ぼくも最近知ったんですけど、三項演算子ではなく条件演算子と呼ぶのが正しいそうです。 条件演算子ですか、単項演算子・二項演算子と続くので、三項演算子と呼ぶ方が自然な気がしますが、言われてみると確かに条件演算子の方が表現としては的確ですよね。 ---------------------------------------- NyaRuRu さん >ガードを持った言語では割と一般的な振る舞いですね. ガードっていうんですね。 なるほど~ ---------------------------------------- なちゃ さん Streetw☆ さん だましてしまいましたw サンプルコードの表現に合わせて上からと言ってしまいました。 先頭が良いかなと思ったのですが。
三項演算子は上から評価される(その2)
>単項演算子・二項演算子と続くので、三項演算子と呼ぶ方が自然 そんなわけないです。 単項演算子と言って ! 演算子なのか ~ 演算子なのか区別が付きますか? 三項演算子という分類の1つに条件演算子というのがあって、他に三項に分類される演算子が無いから三項演算子と言って通じるだけです。
そういえば誰かが条件演算子以外の三項演算子がないものか、とか言ってたなぁ。
meltさんも言ってますが 単項演算子、二項演算子、三項演算子というのは演算子の引数の数かな?による分類ですよ。 単項演算子は、++, --, !, ~とかで 二項演算子は +, -, *, /, ==, !=とかですね で、三項演算子は ? : しか今のところないのです。 演算子にはそれぞれ細かい分類や名前があるのです。 ==や!=は比較演算子、|や&は論理演算子とか。 同様に、 ? : は条件演算子と呼ばれているのです。 Wikipediaのリンク貼り間違えたのでもう一回貼ります。 http://ja.wikipedia.org/w/index.php?title=%E6%9D%A1%E4%BB%B6%E6%BC%94%E7%AE%97%E5%AD%90&oldid=19829792
ヘルプに書いてる 「条件演算子は結合規則が右から左です」 を見て誤解する人もいるでしょうね~ > もう少しいじってネタに使用かなー 書くところでしたw
あ、(その2)の方にコメントしようと思ったのに 間違えちゃった。。。orz
if-else に書き直すと以下の様になるので 「左から評価される」に、なんの疑問もわきませんけどね。 if(i == 1) { Console.WriteLine("壱"); } else { if(i == 2) { Console.WriteLine("弐"); } else { if(i == 3) { Console.WriteLine("参"); } else { if(i == 1) { Console.WriteLine("一"); } else { Console.WriteLine("一杯"); } } } }
melt さん 凪瀬 さん アキラ さん >三項演算子という分類の1つに条件演算子というのがあって、他に三項に分類される演算子が無いから三項演算子と言って通じるだけです。 なるほど、そういう分類なんですね。納得です。 三項演算子のことを条件演算子と呼ぶのだと勘違いしてました。 -------------------------------------------------- Streetw☆ さん >「条件演算子は結合規則が右から左です」 >を見て誤解する人もいるでしょうね~ 僕が実証してみようと思ったきっかけは、条件演算子を多重で使った場合に、演算順序がわからないという表記をどこかで見かけたからなんですよね。 もう少しネタとしてひっぱるつもりですw -------------------------------------------------- n さん >if-else に書き直すと以下の様になるので >「左から評価される」に、なんの疑問もわきませんけどね。 僕も同様のことを思っていたので「思ったとおりの結果だった」と書いたのですが、実際には「そうなる筈だ」という解釈であって、そうなる保障も無いと思うのです。 と言うことを考えるなら、実際やってみちゃった方が早いな、となる訳ですよw
三項演算子は上から評価される(その3)
Powered by: Copyright © R・田中一郎