Previous: 否定
Up: 論理演算
Next: 論理 or
Previous Page: 否定
Next Page: 論理 or
例3
if ( (a>0) && (b>0) ){
printf("a > 0 かつ b > 0 \n");
}
この例では、「 a>0 かつ b>0 」の場合に条件が真となる。実は、今の場合
関係演算は && よりも優先度が高いので丸括弧はなくても問題ないが、前述
の理由で慣れるまでは、つけておいた方が良いであろう。
例4
a = 1;
if ( a<0 && scanf("%d",a) ){
printf("おかしな例\n");
}
論理 and や論理 or 演算では左の値が評価されてから、右の値を評価する。
ところが、論理 and では一つでも偽があれば全体の値も偽になるので、もし
左の値が偽であれば右の値の評価は必要ではない。そこでそのような場合は、
右の値を評価しないようになっている。今の例は少し変な例なのだが、a は
1 なので、左の a<0 は偽である。従って、右の scanf は実行されない点に
注意しよう。