#include"stdafx.h"#include"stdio.h"#definemax(a,b)a>b?a:bintmain(intargc,char*argv[]){inta=5,b=6,c=4,d;d=c+max(a,b);printf("%d",d);return0;}为什么结果是5,而不是10...

展开全部
收起
4回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Aria

    7人对此回答表示赞同

    主函数你为什么要带参数呢? 从程序看你并没有用这些参数呀!改成:
    #include "stdio.h"

    #define max(a,b) a>b?a:b
    int main()
    {
    int a=5,b=6,c=4,d;
    d=c+max(a,b);
    printf("%d",d);
    }
    结果肯定是10
    展开
    7
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • fo系青年

    5人对此回答表示赞同

    情况是这样的,因为maxa(a,b)展开后d=c+max(a,b)就变成d=c+a>b?a:b,因为这里面+优先级最高,所以就是(c+a)>b?a:b。c+a肯定大于b三,所以就取的a的值。
    所以d就等于5了。
    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 春暖花不开

    5人对此回答表示赞同

    宏替换后
    d=c+a>b?a:b;
    +优先级最高
    所以d=a
    所以是5。

    要想得到10
    #define max(a,b) (a>b?a:b)
    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Kaylee

    4人对此回答表示赞同

    将宏定义代入:

    d=c+max(a,b)=c+a>b?a:b

    优先级:"+"大于">"大于 "?:"

    所以式子相当于d=(c+a)>b?a:b
    c+a=9大于b,取a的值赋给d,所以结果是5。

    如果要输出你要的结果:
    那宏定义应该为:#define max(a,b) (a>b?a:b)
    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部