注册 登录
编程论坛 C++教室

[求助]解释一段程序代码(2)

hemingsheng 发布于 2007-07-08 13:40, 488 次点击
#include <iostream.h>
#define min(x,y) (x)<(y)?(x):(y)
void main()
{
int i,j,k;
i=10;
j=15;
k=10*min(i,j);
cout<<k;
}
结果为什么会输出15而不是100?
要这样才能输出100:
#include <iostream.h>
#define min(x,y) (x)<(y)?(x):(y)
void main()
{
int i,j,k;
i=10;
j=15;
k=10*(min(i,j));
cout<<k;
}
为什么???
5 回复
#2
kisscjy2007-07-08 13:55

因为define语句是直接代换的~~

k=10*min(i,j)这个语句会直接变成

k=10*(x)<(y)?(x):(y)
所以结果为15~~

加了括号就变成为

k=10*((x)<(y)?(x):(y))

不知道你明白没有~~


#3
stupid_boy2007-07-08 13:58
define只是进行纯粹的字符替换.

明白了没
#4
hemingsheng2007-07-08 15:25

哦 明白勒 鬱悶 老師怎么沒有說呢。。。

#5
野比2007-07-08 20:06

所以你这样写就可以了.
#define min(x,y) ((x)<(y)?(x):(y))

#6
hemingsheng2007-07-10 22:05
回复:(野比)所以你这样写就可以了.#define min(x,y...

哦 谢谢啦

1