しかし,++演算子と--演算子を式の中で使用すると,意味が異なってくる部分がある。
次の簡単なプログラムをこのページからコピー&ペーストして手早く実行せよ。コピー
&ペーストするときに,円マーク(バックスラッシュ)が日本語文字になっていないかに
int b = 5;
printf( "++a : %d¥n", ++a ); /*
前置
形式の式の値を表示 */
printf( "b++ : %d¥n", b++ ); /*
後置
形式の式の値を表示 */
printf( "a is %d¥n", a ); /* 変数aの値をあらためて表示 */
printf( "b is %d¥n", b ); /* 変数bの値をあらためて表示 */
return 0;
・前置形式の式 ++a を式の中で使うと,まずaの値を1増やして,その結果が式で使われる
・後置形式の式 a++ を式の中で使うと,式では1増やされる前のbの値が使われ,その後変数bの値が1増やされる
という違いがあるのである。
printf( "++a : %d¥n", ++a );
では,aの値が増やされ,その結果である6が表示されているのである。また,
printf( "b++ : %d¥n",b++);
では,変更される前のbの値が表示され,その後,bの値が1増やされるのである。
--演算子でも事情は同じで,
・前置形式の式 --a
を式の中で使うと,まずaの値を1減らして,その結果が式で使われる
・後置形式の式 b--
を式の中で使うと,式では1減らされる前のbの値が使われ,その後変数bの値が1減らされる
という違いがある
例)コピーして手早く実行してみよ。実行結果をよく見て,前置形式・後置形式の効果の違いを確認せよ。
/* incdec3.c */
#include <stdio.h>
int main( void ) {
int a = 5, b = 5, c = 5, d = 0;
d =
a--
*
++b
-
--c
;
printf( "a is %d¥n", a ); /* a is 4 と表示 */
printf( "b is %d¥n", b ); /* b is 6 と表示 */
printf( "c is %d¥n", c ); /* c is 4 と表示 */
printf( "d is %d¥n", d ); /* d is 26 と表示 */
return 0;