2017-07-02 13 views
-1

こんにちは、以下のプログラムの実行手順を立てる必要があります。マクロ展開後の出力は分かりません(間違った理解かもしれません)

#include<stdio.h> 
#define SQUARE(x) (x)*(x) 
void main() 
{ 
int i = 5; 
printf("%d\n", SQUARE(++i)); 
} 

私はマクロのように理解しているように(++i)*(++i)のように、結果= 42 (7)*(6)として展開が、出力は、私は理由を理解しない49のですか?

+0

'以下のプログラムの実行手順を立てる必要があります。なぜですか?簡単に理解するのが難しい場合(それは)、目的に合っていません。プリインクリメントを取り除き、インクリメントをマクロ 'コール'の上に別の行として追加します。 – ThingyWotsit

答えて

関連する問題