首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-06-25 
实参个数求解下面的函数调用语句中fanc函数的实参个数是:()fanc(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

实参个数求解
下面的函数调用语句中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).

热点排行