C初級:否定を使ったif文の記述方法

C言語初級カテゴリのロゴ画像C言語初級
スポンサーリンク

大抵のC言語入門には論理積と論理和の項目(参照)で否定についても説明しています。
このサイトでは、あえて分けさせて頂きました。

実は否定の記述は等価演算子の「!=」で使われています。
「!」の部分です。
これはC言語では否定を表します。
どういう事かと言うと、反対の意味になるということです。

例えば、

if( a != 100 )

と記述した場合、aが100ではない(100以外)場合に成り立つという意味になります。
「!」の記号ですが、単独で用いることができます。その場合は、条件式の先頭に記述します。

if( !(a == 100) )

これでaは100ではない場合に成り立つという先ほどと全く同じ意味になります。
すなわち、aの値が100だったときは成り立たないという事です。

まとめ

if( x != 100 ) と if( !(x == 100) ) は同じ

この否定(!)を利用して次のような記述をする場合があります。

サンプルプログラム not.c

/* not.c */
#include <stdio.h>
int main(void){

    int x;
    
    printf("数値をいれてね: ");
    scanf("%d", &x);
    
    if(!x){
        printf("0です\n");
    }
    else{
        printf("0じゃない\n");
    }

    return 0;
}

解説
初めてこの記述を見たとき、わたしはプログラムの記述ミスかと思いました。
でもC言語には、こういった書き方をするプログラムがよくあるんです。

例えば

if(x){ 処理 }

のような感じで使われます。

これは0以外なら真である(成り立つ)というC言語の性質を利用しています。
ですからif(x) と書くとxの値が0以外の何らかの数値が入力されていればという判定をすることになります。
サンプルプログラムの場合は、if(!x) ですので0以外ではない場合(すなわち0の場合)という意味になります。
まあ、気楽に0の場合を判定したいときは if(!x) と書くぐらいに覚えておけばいいと思います。

コメント