C言語始めました

反転っす! 2017/05/26 02:35


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

#include 

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

  > >>

2017/05/26 02:35 反転っす! 2017/05/18 02:55 マクロ 2017/05/17 02:35 設定(イコール) 2017/05/16 02:48 実用:並び替え(qsort) 2017/05/13 02:09 型作っちゃうぞ 2017/05/12 02:07 列挙型(emun) 2017/05/11 21:47 構造体(struct) 2017/05/10 02:22 ちょっと一息(include) 2017/05/09 02:49 文字区切りstrtok 2017/05/08 01:22 printf