Re: 三項演算子(Re:こんなコード書く?)
fj.comp.lang.cの記事<42328fca.7081%katoh@pop12.odn.ne.jp>で
katoh@pop12.odn.ne.jpさんは書きました。
> 「実行される箇所」というのは(機械語ではなく)ソース上の(字面の)話です
> ね?
機械語でも、もとのソースの対応する範囲の外には飛ば
ない、外からも入ってこないという意味で閉じている、
つまりフローに影響しないわけですよね。
> こういうのを副作用と呼ぶかには,かなり疑問がありますが...
「こういうの」じゃなくて、?:や&&を使えば条件によっ
て関数が呼ばれてその結果文字が出力されるとか、そう
いう点を副作用と呼びました。
> && や || は,一方の値に依っては,残りを計算しなくても全体の値が決まると
> いう,その演算の(ある意味特殊な)性質を利用しているので,?: 演算子とは
> 若干性質が異なるように思えます.
計算というか、評価が行われるかどうかを問題にしてい
るわけです。必ずしも全体を評価しない、という点で似
ているかなと。
> また,乗算でも,第一項がゼロだったら残りを計算
> せずに結果をゼロにするというのも考えられます(Cで許されたっけ?).
こちらの場合は、残りを計算結果に反映するかどうかは
ともかくとして、評価はしないとC言語としてはまずい
でしょ?
> もちろん,?: に後ろの二項とも評価するように操作的な意味を与える事は可能
> で,それをしなかったのは何故か,という話なら,Cの場合は,実行速度最優先
> で設計したから,ということだと思います.
それはまあそういってもいいかな。実行速度最優先にす
るために何かを犠牲にした、というわけではなくて、評
価しない項を作るということに積極的な意義をもって設
計しているような気はするんですけどね。
--
Junn Ohta
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735