関係演算、論理演算について
最終更新日:2004-06-24.
今回は、関係演算、論理演算などについてちょっと。
・関係演算
変数の大小関係を比較することができます。
関係演算子には以下のようなものがあります。
「<」、「>」、「==」、「<=」、「>=」、「!=」。
例えば。
int i;
そして、以下のような式には、それぞれに次のような意味があります。
i>0
iは0よりも大きい。
i<0
iは0よりも小さい。
i==0
iは0と等しい。
i>=0
iは0と等しいかそれよりも大きい。
i<=0
iは0と等しいかそれよりも小さい。
i!=0
iは0と等しくない。
これらは、条件文、if()文、while()文などの条件部分に
使用することができます。
例えば。
if( i>2 ){
実行したい文;
}
これは、iが2よりも大きいとき、{ }の中の文を実行します。
while( i==2 ){
実行したい文;
}
これは、iが2と等しいとき、{ }の中の文を実行します。
このような関係演算子を用いた式に、値があります。
例えば。
int i;
i=5;
「i>0」の条件に合致します。
でも、「i<0」の条件にかないません。
条件に一致したときを「真」、一致しないときを「偽」といいます。
真のときの値は1、偽のときの値は0となります。
・論理演算
論理演算を使うと、複数の条件が満たされているかどうかを
判定することができます。
論理演算子には以下のようなものがあります。
「&&」、「||」。
例えば。
int i;
(1<=i) && (i<=9)
iの値が1以上9以下のとき真となり、1という値を持ちます。
それ以外のとき偽となり、0という値を持ちます。
(1<i) || (i<9)
iの値が1よりも大きいか、または9よりも小さいとき真となり、1という値を
持ちます。それ以外のとき偽となり、0という値を持ちます。
「&&」は論理積で「かつ」というように読み、
両方の条件が満たされたとき「真」となり、
それ以外は偽となります。
「||」は論理和で「または」と読み、どちらか一方の条件が満たされていれば
「真」となり、それ以外は偽となります。
では、ソースにしてみましょう。
以下のソースでは、変数iが1以上9以下であるか、
次に、2の倍数または3の倍数であるかどうかを調べています。
+------------------------------------------------------------+
/* filename=no019-1.c */
/* include */
#include <stdio.h>
int main( )
{
int i;
/* 論理積 */
i=6;
printf("変数iに%dを代入したときの条件判断:", i);
if( 1<=i && i<=9 )
printf("条件を満たしています。\n");
else
printf("条件を満たしていません。\n");
i=10;
printf("変数iに%dを代入したときの条件判断:", i);
if( 1<=i && i<=9 )
printf("条件を満たしています。\n");
else
printf("条件を満たしていません。\n");
/* 論理和 */
i=4;
printf("変数iに%dを代入したときの条件判断:", i);
if( (i%2==0) || (i%3==0) )
printf("条件を満たしています。\n");
else
printf("条件を満たしていません。\n");
i=5;
printf("変数iに%dを代入したときの条件判断:", i);
if( (i%2==0) || (i%3==0) )
printf("条件を満たしています。\n");
else
printf("条件を満たしていません。\n");
i=6;
printf("変数iに%dを代入したときの条件判断:", i);
if( (i%2==0) || (i%3==0) )
printf("条件を満たしています。\n");
else
printf("条件を満たしていません。\n");
return 0;/* 終了 */
}
+------------------------------------------------------------+
上記のソースをコンパイルして実行すると以下のように表示されました。
変数iに6を代入したときの条件判断:条件を満たしています。
変数iに10を代入したときの条件判断:条件を満たしていません。
変数iに4を代入したときの条件判断:条件を満たしています。
変数iに5を代入したときの条件判断:条件を満たしていません。
変数iに6を代入したときの条件判断:条件を満たしています。
戻る