Previous: 論理演算
Up: 論理演算
Next: 論理 and
Previous Page: 論理演算
Next Page: 論理 and
例1 if ( ! a){ printf("a != 0 \n"); }a が0以外の値(真)ならば0(偽)にし、0ならば、0以外の値(1) にする。
例2 a=1; if (! a==0){ printf("注意 \n"); }この例は注意が必要である。何故ならば、否定演算子と関係演算子を混ぜて 使っており、一般には2つ以上の演算子を同時に使うと、どちらの演算から 行うかによって、結果が違ってしまう。そこで、混乱が生じないようにC言語 では、演算子には優先順位というものがあって、優先度の高い演算から先に 実行されるようになっている。上の例では、! a==0 と書いてあるので、あた かも、a==0 が評価(a=1 だから偽)されてから否定(従って真)される様に 思うが、実は否定演算は関係演算よりも優先度が高いので、否定(!a)されて から関係式が評価されている。勿論、今の場合は同じ結果を導くので、問題に ならないが、こうした優先順位が問題を引き起こす場合もある。そこで、優先 順位はプログラマーが明示的に指示するようにした方が、無用な混乱がなく 堅実である。例えば、a==0 を先に評価したい場合は、!(a==0) のように 丸括弧を使えば、必ず丸括弧の中から評価される。反対に否定演算を先に評価 したい場合は、(!a)==0 と書けば良い。