インクリメントは値を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 目次はこちら