thisdesuのブログ

C言語はじめました

にほんブログ村 IT技術ブログ C/C++へ

反転っす!

ifなので真(1以上)か偽(0)を判定する場合に、結果を入れ替えて解釈して欲しいことがあります。
これは単に反対の判定文すれば良いんですが、関数の結果で0を真として扱いたい、とか反対で判定すると、他の判定とことなり意味的に真なのか偽なのか統一感がなくなってバグを作り出す原因にもなります。あくまでもコーディングとしては変わりないのですが、、、値の前に[!]をつけることにより反転されます。

#include <stdio.h>

int main() {
  int a;

  a =1;
  printf("%d\n",a);
  if ( a ) {
    printf("test %d\n",a);
  }

  printf("%d\n",!a);
  if ( !a ) {
    printf("test2 %d\n",!a);
  }
}


結果

$ gcc main.c
$ ./a.out 
1
test 1
0