专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

实参个数求解,该怎么解决

发布时间:2011-06-28 12:14:19 文章来源:www.iduyao.cn 采编人员:星星草
实参个数求解
下面的函数调用语句中fanc函数的实参个数是:()
fanc(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));

求详细解答,详细分析,谢谢!

------解决方案--------------------
3个吧,逗号运算符啊.

#include <stdio.h>
#include <stdlib.h>

void func(int a, int b)
{
    printf("a=%d b=%d\n", a, b);
}


int main(int argc, char *const argv[])
{
    func((1, 2), (3, 4));
    return 0;
}

------解决方案--------------------
完全取决于func、f2还有max到底是宏还是函数... 如果都是函数应该是7个

v1
v2
f2(v1,v2)
(v3,v4,v5)
v7
v8
(v6, max(v7, v8))

5个可能是max被视为宏了,会少两个
------解决方案--------------------
跟宏有很大关系
#include <stdio.h>
#include <stdlib.h>
#define f1(a,b)  a,b
void fub(int c,int d,int a, int b,int e)
{
    printf("a=%d b=%d\n", a, b);
    printf("c=%d d=%d\n", c, d);
}

int main(int argc, char *const argv[])
{
    fub(f1(3,4),(1,3),(3,4),(1,2,3,4,7));
    while(1);
    return 0;
}

------解决方案--------------------
题目中说是func函数的参数,我认为就是3个:
    1、v1,v2属于函数f的形参,其返回值做为函数func的第一个形参;
  2、(v3,v4,v5)是一个逗号运算符组成的表达式,值为最右边的v5,v5做为函数func的第2个形参;
  3、(v6,max(v7,v8)).v7,v8属于max的函数,其返回值与v6又组成了一个逗号表达式,值为函数max的返回值,该值做为函数func的第3个形参。
  综合以上分析,函数func的形参个数为3.在发生调用时,实参与形参在个数、类型、顺序上必须一致,所以我认为函数func的实参个数为3.
  补充:
  以func(f(v1,v2),(v3,v4,v5),(v6,max(v7,v8)))形式调用函数func时,外层括号里的f(v1,v2),(v3,v4,v5),(v6,max(v7,v8))都属于表达式,在发生调用时,这些表达式的值都会被计算出,其形式就如同func(v1,v2,v3).
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: