鱼C论坛

 找回密码
 立即注册
查看: 2387|回复: 6

宏定义和三目运算符

[复制链接]
发表于 2022-4-15 23:18:53 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#define MAX(x,y) ((x) > (y)) ? (x) : (y)
main()
{
    int a=5 b=8 c=20;
    printf(‘%d, MAX(a-b) , (b+c) ? (a) : (b));
}
这道题为什么结果是5 ,a-b等于-3,b+c等于28 为什么不是等于后面的8而是前面5 条件不成立应该就是取后面的b不知道为什么取了a的值(这道题就是比谁大)
有大佬能说的详细点吗 实在是不理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 23:19:56 From FishC Mobile | 显示全部楼层
救命啊 这到底是咋回事啊 我百度搜 他们都说条件成立取a 不成立取b 我就是这样想的 但是结果不是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 23:20:43 | 显示全部楼层
你这代码不是应该报错?运行不了????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 23:22:00 From FishC Mobile | 显示全部楼层
ba21 发表于 2022-4-15 23:20
你这代码不是应该报错?运行不了????

这上面打字我偷懒了 代码格式是对的 我少写了个逗号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 23:23:19 From FishC Mobile | 显示全部楼层
c真难 发表于 2022-4-15 23:22
这上面打字我偷懒了 代码格式是对的 我少写了个逗号

就我把c这个去掉 就单纯比较a和b大小 a大于b不成立 它取的还是a的值 我不理解啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-16 00:18:37 | 显示全部楼层
这个代码有问题。

MAX函数那里是不是缺东西了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-16 09:40:35 From FishC Mobile | 显示全部楼层
本帖最后由 zzxhh628 于 2022-4-16 09:41 编辑

#define MAX(x,y) ((x) > (y)) ? (x) : (y)

int main()
{
  int a=5,b=8,c=20;
    printf("%d\n",(b+c)?(a):(b));
  printf("%d\n", MAX(a-b,(b+c)?(a):(b)));
}
(b+c)?(a):(b),b+c的结果是非0值,也就是真,那么这个表达式的值就是a的值(也就是5),然后通过MAX(a-b,(b+c)?(a):(b)),a-b是个负数,肯定没有5大(第二个参数的值),所以最后的值就是5。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 18:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表