A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aofex 中级黑马   /  2015-7-9 13:44  /  771 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>

typedef int (*Yunsuan)(int, int);

int sum(int a, int b)
{
    return a + b;
}

int minus(int a, int b)
{
    return a - b;
}

int count(int a, int b, Yunsuan p)
{
    return p(a, b);
}

int main()
{
    int a = sum(minus(10, 5), count(10, 5, sum));
    printf("%d\n", a);
    return 0;
}
最后计算结果是20  百思不得其解  我去

2 个回复

倒序浏览
的确是20啊,
int a = sum(minus(10, 5), count(10, 5, sum));
首先调用minus(10, 5),10-5 = 5返回值为5.
其次调用count(10, 5, sum);在count();中调用sum(10,5),10 + 5 = 15,返回值为15,count(10, 5, sum)的返回值也就是15。
最后将返回值带入,那么 sum(minus(10, 5), count(10, 5, sum));就等于sum(5, 15), 5 + 15 = 20;所以输出20。
: )
回复 使用道具 举报
庐山烟雨浙江潮 发表于 2015-7-9 13:52
的确是20啊,
int a = sum(minus(10, 5), count(10, 5, sum));
首先调用minus(10, 5),10-5 = 5返回值为5.

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马