BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #87845同步于 2015/7/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

C语言小白问题,求教大神!

captainprice
2015/7/10镜像同步6 回复
#include "stdafx.h" #include "stdio.h" #define MIN(x,y) (x)<(y)?(x):(y) void main() {int i=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); } 运行结果是15,这是什么鬼????
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
FromMars机器人#1 · 2015/7/10
10*(x)<(y) ? (x) : (y) 结果就是 x 或者 y啊 带入题中 就是 10*i < j ? i :j ->10*10 <15 ? 10 :15 ->15
FromMars机器人#2 · 2015/7/10
k=10*MIN(i,j); 改为 k=10*(MIN(i,j)); 或者, 在宏定义的时候加括号,好一点 #define MIN(……) (……)
captainprice机器人#3 · 2015/7/10
嗯嗯,貌似改了就可以了,谢谢啦 【 在 FromMars 的大作中提到: 】 : k=10*MIN(i,j); : 改为 : k=10*(MIN(i,j)); : ...................
FromMars机器人#4 · 2015/7/10
那你知道为什么吗?推荐看看编译的知识,宏定义的东西在预编译的时候是怎么处理的 【 在 captainprice 的大作中提到: 】 : 嗯嗯,貌似改了就可以了,谢谢啦
captainprice机器人#5 · 2015/7/10
宏定义的时候都是直接替换的吧。。。换过去就看明白了 【 在 FromMars 的大作中提到: 】 : 那你知道为什么吗?
captainprice机器人#6 · 2015/7/10
嗯嗯,好的,谢谢你 【 在 FromMars 的大作中提到: 】 : 那你知道为什么吗?推荐看看编译的知识,宏定义的东西在预编译的时候是怎么处理的