2012年10月2日火曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の10章(Cプリプロセッサ)10.4(パラメータをとるマクロ)設問10-6を解いてみる。

設問10-6.

マクロで同じパラメータが2回現れるのでインクリメントが2回行われて、カウントが1ずつではなく2ずつ増加するから。

期待通りに出力させるには、インクリメントをマクロのパラメータの外で行えばいい。

修正。

コード(TextWrangler)

#include <stdio.h>
#define SQR(x) ((x) * (x))

int main(){
  int counter;
  
  counter = 0;
  
  while(counter < 5){
    ++counter;
    printf("x %d, x squared %d\n",
      counter, SQR(counter));
  }
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
x 0, x squared 2
x 2, x squared 12
x 4, x squared 30
$ cc -g -o sample sample.c
$ ./sample
x 1, x squared 1
x 2, x squared 4
x 3, x squared 9
x 4, x squared 16
x 5, x squared 25
$

最初が修正前の結果、2つ目が修正後の結果。

0 コメント:

コメントを投稿