2012/06/13

C言語 演算子 (算術 代入 比較 論理)

四則演算 +, -, *, /, %

代表的な算術演算子。基本的なところも書いておこう。
#include <stdio.h>
int main(void){
  int a=20,b=3;
  printf("加算(int) %d+%d = %d\n",a,b,a+b);
  printf("減算(int) %d-%d = %d\n",a,b,a-b);
  printf("乗算(int) %d*%d = %d\n",a,b,a*b);
  printf("除算(int) %d/%d = %d\n",a,b,a/b);
  printf("剰余(int) %d%c%d = %d\n",a,'%',b,a%b);
  printf("乗算(float) %d/%d = %f\n",a,b,(float)a/b);
  return 0;
}
%の表示で少し悩んでしまった。普通はどうやるのかな?
加算(int) 20+3 = 23
減算(int) 20-3 = 17
乗算(int) 20*3 = 60
除算(int) 20/3 = 6
剰余(int) 20%3 = 2
乗算(float) 20/3 = 6.666667


代入演算子 =, +=, -=, *=, /=, %=

算数、数学のイコールとは扱いが違うので、プログラム初心者は違和感を感じるところ。
#include <stdio.h>
int main(void){
  int a=20,b=3;
  printf("まず「a」には「%d」が入っている\n",a);
  printf("代入         a=%d  aは %d になる\n",b,a=b);
  a=20;
  printf("加算して代入 a+=%d aは %d になる\n",b,a+=b);
  a=20;
  printf("減算して代入 a-=%d aは %d になる\n",b,a-=b);
  a=20;
  printf("乗算して代入 a*=%d aは %d になる\n",b,a*=b);
  a=20;
  printf("減算して代入 a/=%d aは %d になる\n",b,a/=b);
  a=20;
  printf("余りを代入   a%c=%d aは %d になる\n",'%',b,a%=b);
  return 0;
}
代入演算子は記述の手間が減るのでよく使う。
まず「a」には「20」が入っている
代入         a=3  aは 3  になる
加算して代入 a+=3 aは 23 になる
減算して代入 a-=3 aは 17 になる
乗算して代入 a*=3 aは 60 になる
減算して代入 a/=3 aは 6  になる
余りを代入   a%=3 aは 2  になる


比較演算子 ==, !=, >, >=, <, <=

ifやfor文で必須の比較演算子。
#include <stdio.h>
int main(void){
  int a=10,b=10;

  printf("a=%d\tb=%d\n\n",a,b);

  if(a==b) printf("a==b\tYES\n");
  else printf("a==b\tNO\n");

  if(a!=b) printf("a!=b\tYES\n");
  else printf("a!=b\tNO\n");

  if(a>b) printf("a>b \tYES\n");
  else printf("a>b \tNO\n");

  if(a>=b) printf("a>=b\tYES\n");
  else printf("a>=b\tNO\n");

  if(a<b) printf("a<b \tYES\n");
  else printf("a<b \tNO\n");

  if(a<=b) printf("a<=b\tYES\n");
  else printf("a<=b\tNO\n");

  return 0;
}
aとbに好きな整数を入れて実行すると、比較演算子で大きさを比較をして結果を表示する。
a=10     b=10

a==b     YES
a!=b     NO
a>b      NO
a>=b     YES
a<b      NO
a<=b     YES


論理演算子 &&, ||, !

やや複雑な条件を設定するときに使う。
#include <stdio.h>
int main(void){
  int num = 0;

  /*論理積(AND)共に真なら真*/
  if(num>=0 && num<=12)printf("numは0から12の範囲\n");
  else printf("numは0から12の範囲ではない\n");

  /*論理和(OR)いずれか一方が真なら真*/
  if(num<0 || num>12)printf("numは0から12の範囲ではない\n");
  else printf("numは0から12の範囲\n");

  /*論理否定(NOT)真の時に偽*/
  if(! num)printf("numは0です\n");
  else printf("numは0以外です\n");

  return 0;
}
&&(AND)と||(OR)を同じように使ってみた。!(NOT)は何に使うの?という感じだが、この場合0を判定するのに使っている。
numは0から12の範囲
numは0から12の範囲
numは0です


C言語 ANSI C89 Meadow & MinGW GCC 目次はこちら