#defineを使用して関数を定義しましたが、操作の単純な結果を出力すると予期しない結果が生じます。ここでは、コードは次のとおりです。#define関数が私に予期しない結果を与える
#include <stdio.h>
#define CUBE(x) (x * x * x)
int main() {
int m, n = 3;
m = CUBE(n + 1);
printf("%d %d", m, n--);
return 0;
}
印刷結果は10と3であり、私は理由を理解することはできません。それはnをそれ自身で3倍に増やしてから1を加算するので、結果は28と3ではないでしょうか?
'#define'の正しい計算を取得することは、プレーンテキスト置換です。この置換をyoruコードで行い、コードがどのように見えるかを確認してください –
プリプロセッサについて知っておくべきことがすべて分かったら、これを知ることができます:関数を定義する場合は、マクロではなく関数を定義します。 –