Previous: 否定
Up: 論理演算
Next: 論理 or
Previous Page: 否定
Next Page: 論理 or

論理 and

例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 は実行されない点に 注意しよう。

maruyama@wakhok.ac.jp
1995年02月08日 (水) 18時57分57秒 JST