次の簡単なCコードがあります
#define Sqrt(A) A * A
int main(void) {
int A = 10;
int x = Sqrt(A+1);
return 0;
}
どういうわけか、そのように使用すると、A + 1 で x が 21 になり、おそらく 10 + 11 になります。私の質問は、乗算がどのように無視されているのですか? マクロをマクロ テキストで切り替えると、121 という正しい結果が得られます。
ありがとう。