当前位置: 代码迷 >> C语言 >> [讨论]为何输出的是15而不是100?
  详细解决方案

[讨论]为何输出的是15而不是100?

热度:93   发布时间:2005-03-13 22:23:00.0
[讨论]为何输出的是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)&lt;(j)?(i):(j);
优先级 "? :"  小于 "&lt;" 小于 "*"
----------------解决方案--------------------------------------------------------
说的对
----------------解决方案--------------------------------------------------------
应当深刻领会预编译、宏定义
----------------解决方案--------------------------------------------------------
谢谢,我明白了!
----------------解决方案--------------------------------------------------------
三 楼的说得很有道理
----------------解决方案--------------------------------------------------------
其实,c考试就喜欢出这样的题来阴人!!!
----------------解决方案--------------------------------------------------------
楼上的怎么都是这句话   呵呵
----------------解决方案--------------------------------------------------------
2楼     
         

                        我顶
----------------解决方案--------------------------------------------------------
  相关解决方案