[C、C++] 関数形式マクロ副作用の解説

C++

いきなり説明してもわからないことが多いので、例を使っていきたいと思います。

ソースコードを使って説明

#include <iostream>
#define Test(A) (A % 10 * 2) * 100 + (A) % 10
using namespace std;


int main(void) {


  ans = Test(1 + 2);
  cout << ans << endl;


}

上のプログラムの実行結果わかりますか?ans = 603ではありません。

左側の計算式は間違っていて右側の計算式が正しいものになります。

つまり関係式マクロでは1+2が3に変換されることなくそのまま代入されてしまうことなのです!

皆さんも関数形式マクロを使うときは副作用に気をつけて使用しましょう!

今回は以上になります!

ではまた。

コメント

タイトルとURLをコピーしました