以下のコードを実行すると
counter=3
・・・①
という結果が表示されます。
func関数は2回しか呼び出されていないので、
counter=2
だと思ったのですが、どうして①のような結果になるのでしょうか?
C
1#include <stdio.h> 2 3/* 値をチェックする関数をマクロで定義する */ 4/* 「X」の値が0、または、1なら1を返す */ 5#define CHECK_VALUE(X) (((X) == 0 || (X) == 1) ? 1 : 0) 6 7/* 関数のプロトタイプ宣言 */ 8int func(int value, int *counter); 9 10/* 関数を定義する */ 11int func(int value, int *counter) 12{ 13 /* カウンタをインクリメントする */ 14 (*counter)++; 15 16 return (value * value); 17} 18 19int main(int argc, char *argv[]) 20{ 21 int counter = 0; 22 23 if (CHECK_VALUE(func(2, &counter)) == 0) 24 { 25 func(3, &counter); 26 } 27 28 printf("counter=%d\n", counter); 29 30 return 0; 31} 32 33
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/18 12:03 編集