2012/04/24

C言語 インクリメント デクリメント

インクリメントは値を1増やし、デクリメントは1減らす演算子。プログラム中で頻繁に使われる。この演算子は ++a のように前につけることも出来るし、a++ のように後ろでもつけることができる。しかし代入の際には注意する必要がある。

前置、後置の違い

#include <stdio.h>
int main(void){
  /* increment */
  int a;
  int b;
  a = 0;
  b = 0;
  b = a++; /* b=a 代入後に a+1 計算 */
  printf("b=a++\tb=%d\ta=%d\n",b,a); /* b=0 */

  a = 0;
  b = 0;
  b = ++a; /* a+1 計算後に b=a 代入 */
  printf("b=++a\tb=%d\ta=%d\n",b,a); /* b=1 */

  /* decrement */
  a = 0;
  b = 0;
  b = a--; /* b=a 代入後に a-1 計算 */
  printf("b=a--\tb=%d\ta=%d\n",b,a); /* b=0 */

  a = 0;
  b = 0;
  b = --a; /* a-1 計算後に b=a 代入 */
  printf("b=--a\tb=%d\ta=%d\n",b,a); /* b=-1 */  
  return 0;
}
結果は以下のようになる。代入してからインクリメントされるか、インクリメントしてから代入するかの違いがある。
b=a++  b=0   a=1
b=++a  b=1   a=1
b=a--  b=0   a=-1
b=--a  b=-1  a=-1


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