所有这些函数都在int main()之外:
int func1(int x) {
int v1 = 6 * x;
return v1; // the input argument will be 2, so v1 = 12
}
int func2(){
int v2 = func1() / 4; // It's suppose to be 12 / 4
//I get "too few arguments in function call"
}
我知道第二个函数里面的func1()
缺乏参数,这就是"参数太少的原因"警告。我想知道的是如何在func1()
内使用func2()
的返回值作为变量的值。
像这样,使用没有参数的函数,可以正常工作:
int sum() {
int v1 = 10;
int v2 = 4;
int v3 = v1 + v2; // 10 + 4 = 14
return v3; // v3 = 14
}
int sub() {
int v4 = sum() - 7; // 14 - 7 = 7;
return v4; // v4 = 7
}
感谢。
编辑:对不起,当我说我理解警告的原因时,我以为自己已经说清楚了。我的错误。我需要函数1中用户的输入是可变的。
因此,在main()中,当提示用户给出一个数字时,它将被传递给函数1.该参数不是固定的,而是可变的。
编辑2: 以下是主要背后的想法:
int main() {
int x = 0;
cin >> x;
func1(x); // send user input to func1, then to func2
int e = func2(); // return result of above to int e
cout << e << "\n";
}
答案 0 :(得分:4)
您收到此错误是因为您必须为函数提供所需的所有参数。你没有给函数赋一个参数,所以它不起作用。 sum()不接收任何参数,因此必须像这样调用
sum()
func1()接受一个参数,因此要么将其更改为不带参数的函数
int func1() {
int v1 = 6 * 2;
return v1; // the input argument will be 2, so v1 = 12
}
但它表明你没有考虑过你在做什么以及它有点无用
或在不改变功能的情况下将其称为
int v2 = func1(2) / 4;
EDIT
所以你可以改变func2来获得一个参数并将其传递给func1
int func2(int x){
int v2 = func1(x) / 4;
}
并在主要做这个
int x;
cin>>x;
func2(x);
你的func2()应该返回int,但你没有返回语句
答案 1 :(得分:2)
应该是:
int func2(){
int v2 = func1(2) / 4; // It's suppose to be 12 / 4
return v2;
}
无论何时调用函数,都必须传递所需的参数。
你得到“参数太少”,因为你没有传递适量的论据!
答案 2 :(得分:1)
编辑匿名
如果您需要将变量作为用户输入,请尝试以下操作:
int main() {
int x = 0;
cin >> x;
int y = func1(x); // send user input to func1, then to func2
int e = func2(y); // return result of above to int e
cout << e << "\n";
}
然后你的功能应该是这样的:
int func1(int x) {
int v1 = 6 * x;
return v1; // the input argument will be 2, so v1 = 12
}
int func2(int x){
int v2 = func1(x) / 4; // It's suppose to be 12 / 4
}
答案 3 :(得分:1)
该函数需要一个参数,所以传递一个参数。
就这么简单。
答案 4 :(得分:0)
double add_5(double x) {
return x + 5;
}
double nested_method(double x) {
double myVariable = add_5(x); //my variable = x + 5
//other code//
return myVariable;
}
int main() {
double myInput = 123;
std::cout << nested_method(myInput) << std::endl; //output should = 128
}
如果一个方法要求'n'参数调用该方法,你必须给它每个'n'参数(适当类型)。
忽略重载/默认值等
答案 5 :(得分:0)
我可能误解了你的问题,但这对我有用:
$ cat test.c
#include <stdio.h>
#include <stdlib.h>
int func1(int x)
{
int v1 = 6 * x;
return v1; // the input argument will be 2, so v1 = 12
}
int func2(int x)
{
int v2 = func1(x) / 4; // It's suppose to be 12 / 4
return v2;
}
int main( int argc, char *argv[] )
{
printf( "%i\n", func2( 2 ) );
return 0;
}
$ gcc test.c
$ ./a.out
3