[讨论]为何输出的是15而不是100?
为何输出的是15而不是100?#define MIN(x,y) (x)<(y)?(x):(y)
main()
{
int i,j,k;
i=10;j=15;k=10*MIN(i,j);
printf("%d\n",k);
getch();
}
搜索更多相关的解决方案:
输出
----------------解决方案--------------------------------------------------------
你是不是没看清楚你的程序,里面有明显的错误 #define是一个预处理命令,只是在编译之前无条件的替换,你考虑一下, 将#define MIN(x,y) (x)<(y)?(x):(y)改写成为#define MIN(x,y) ((x)<(y)?(x):(y))答案就是100
[此贴子已经被作者于2005-3-13 22:59:11编辑过]
----------------解决方案--------------------------------------------------------
k=10*MIN(i,j);实际就是
k=10*(i)<(j)?(i):(j);
优先级 "? :" 小于 "<" 小于 "*"
----------------解决方案--------------------------------------------------------
说的对
----------------解决方案--------------------------------------------------------
应当深刻领会预编译、宏定义
----------------解决方案--------------------------------------------------------
谢谢,我明白了!
----------------解决方案--------------------------------------------------------
三 楼的说得很有道理
----------------解决方案--------------------------------------------------------
其实,c考试就喜欢出这样的题来阴人!!!
----------------解决方案--------------------------------------------------------
楼上的怎么都是这句话 呵呵
----------------解决方案--------------------------------------------------------
2楼
我顶
----------------解决方案--------------------------------------------------------