【发布时间】:2009-08-29 10:15:13
【问题描述】:
你好,
有人能帮我理解为什么 SQUARE(x) 的值是 49 吗?
我正在使用 Visual C++ 6.0。
#define SQUARE(X) X * X
int main(int argc, char* argv[])
{
int y = 5;
printf("%d\n",SQUARE(++y));
return 0;
}
【问题讨论】:
-
啊,这个老栗子...要获得正确的结果,您应该使用:#define SQUARE(X) ((X) * (X))。
-
@Ian 错了,我害怕。
-
Ian Kemp 的评论确实是错误的,因为它并没有解决问题。但是,最好在宏中添加括号: SQUARE(a + b) 扩展为 a + b * a + b 不是 (a+b)*(a+b) 而是 a + (b* a) + b.
标签: c++ macros visual-c++-6