開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第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 コメント:
コメントを投稿