作为表达式的函数调用的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:12:43
被调用的函数必须是有返回值的函数.
这句话是不是说:必须把返回的值传给另一个变量?
举个例子来说吧! 有这么一个简单函数:
double sq(double n){ return n*n;}
如果该函数的调用形式如下:
result=sq(5.0);则是作为表达式的函数调用.
如果该函数的调用形式如下:
sq(5.0);
则是作为语句的表达式.
是不是必须把返回的值传给另一个变量或另一个表达式才是作为表达式的函数调用呢?

已知int f(int);和int g(int);是函数f和g的原形.在以下几个语句中,将函数f作为表达式调用的有( )?
a. f(3);
b. p=f(3);
c. g(f(3));
d.f(g(3));
我选bc. 因为,f(3)的结果返回给了一个变量或是一个表达式!
敬请各位高手们指教批正!

函数调用的方式
在C语言中,可以用以下几种方式调用函数:
1. 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。
2. 函数语句:函数调用的一般形式加上分号即构成函数语句。例如: printf ("%d",a);scanf ("%d",&b);都是以函数语句的方式调用函数。
3. 函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。介绍printf 函数时已提到过,这里从函数调用的角度再强调一下。

问题:
是不是必须把返回的值传给另一个变量或另一个表达式才是作为表达式的函数调用呢?

答:
这个问题,最关键的地方,要弄清楚表达式的概念。我个人觉得你在钻牛角尖。后面那个题目也在钻牛角尖。很无聊。