注目の投稿

技術Note一覧

このブログのメインコンテンツである技術Noteの一覧

2017/09/24

短絡評価

C言語の論理演算子は無駄な式の評価をカットする仕様になっている.

ex) 以下を実行すると何も出力されない
false && printf(“aa”)
true  || printf(“aa”)
→第一項を評価した段階で式全体の論理が確定するから第二項は評価されない

ex) 以下を実行すると”aa”が出力される
false ||   printf(“aa”)
true  && printf(“aa”)
→第一項を評価した段階で式全体の論理が確定しないから第二項の評価に入る

詳細は以下に詳しい.
参考:
https://qiita.com/gyu-don/items/a0aed0f94b8b35c43290

参考ページにある以下の書き方は玄人っぽい.
a || doSomething()
でも残念ながら以下の書き方はできない.
a || return 0;
returnは関数でなく予約語だから.