概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 前置演算と後置演算
2006年09月08日 (金) | 編集 |
今日も夏の日に戻ったが如く暑かった。
見苦しい。見苦しいぞ残暑。
既に貴様の出番は終わったのだ。速やかに秋にその座を譲るがいい。

去年もそんなこと思いながらこの時期過ごしてたような。


+1したり-1したりする、++や--の演算子の話だ。
++(インクリメント演算子)と--(ディクリメント演算子)は変数の前に置くか後ろに置くかで前置演算と後置演算に分かれるのだそうだ。
これらの演算子はループ文においてよく使われてきたが、今までは変数の後ろ、つまり後置演算でしか使わなかった。

例えばn=1のとき、

a=n++;

といった形でループを終わり、nに+1して次のループを始める、といった感じに。
これだとこの式が実行されたとき、a=1、n=2になる。

前置演算ではどうなるかというと、

a=++n;

a=2、n=2になるらしい。
どちらもnに+1されることには変わりないんだが、後置演算だとaにnの値(1)を代入してからnを++するのに対して、前置演算だとnに++してからaにnの値(2)を代入する、という違いがあるわけだな。

まあ論より証拠ということで実際に見てみるとしよう。

void main(void)
{
 int i,count_before=0,count_after=0;
 printf("左が前置演算、右が後置演算だぜ\n");
 for(i=0;i<9;i++)
  printf("%2d %2d\n",++count_before,count_after++);
}


こんなのを実行してみる。
それぞれ前置演算と後置演算で表示することを繰り返すだけの単純なプログラムだな。

before_after_test.jpgbefore_after_test2.jpg
この通り

我らが後置演算では0から始まってしまう為に前置演算に一歩先を譲ってしまうのだ!
その方が使い易い気はするが。


まとめよう。

後置演算では式を実行した後で+1するが、
前置演算では式の実行前に+1される


以上。
後置演算はよく使うし使ってきたんだが、前置演算は一体何に使うのか、が問題だな。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。