c++#define问题

#include<iostream>
using namespace std;
#define N 10
#define L(r) r*r
int main(void)
{
cout<<L(N+N)<<endl;
return 0;
}
为什么结果是120,不是400?

#define L(r) r*r是宏定义,直接带入,不管你r的表达式多复杂都是直接带入,不是先算r
所以说L(N+N)=N+N*N+N=120
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-22
L(N+N)将编译为N+N*N+N;
宏定义只是简单的对照翻译,不会进行计算。
第2个回答  2012-06-22
确定120?define只是简单的替换
第3个回答  2012-06-22
宏定义只是简单直接带入,对照翻译,不会进行优先级计算
l(r) r*r
l(N) N*N
L(N+N) N+N*N+N
这样一看就很清楚了!呵呵
相似回答