有如下函数定义: int func(int a)( return a; int func(int a, int b=1) return a + b;那么按照如下调用cout<<fun(0,2)<<""; cout<<fun(1)<<endl;有什么错误
时间: 2023-12-16 15:02:33 浏览: 124
按照给出的函数定义,调用`fun(0,2)`会返回`2`,调用`fun(1)`会返回`2`。因此,调用没有语法错误。
但是,给出的函数定义存在语法错误。在第一个函数定义中,函数体缺少右大括号,应该为:
```c++
int func(int a) {
return a;
}
```
在第二个函数定义中,返回值类型和函数名之间缺少空格,应该为:
```c++
int func(int a, int b=1) {
return a + b;
}
```
修正后的函数定义为:
```c++
int func(int a) {
return a;
}
int func(int a, int b=1) {
return a + b;
}
```
调用`fun(0,2)`和`fun(1)`会按照预期执行,分别返回`2`和`2`。
相关问题
假设有以下类A,下面程序片段,哪个是正确的? class A{ int func2(int a){return a*a*a;} int c; public: int b; int func1(int a){return a*a;} }; A. A a; a.b=12; a.func1(5); B. A a; a.c=12; C. A a; a.func2(12); D. A a; a::func1(5);
选项A是正确的。
正确的代码应该是:
```cpp
A a;
a.b = 12;
a.func1(5);
```
选项A中,先定义了一个类A的对象a,然后给对象a的公有成员变量b赋值为12,最后调用对象a的公有成员函数func1,传入参数5,得到返回值25。
选项B中,A类中没有公有成员变量c,因此编译会报错。
选项C中,访问类A中的非公有成员函数func2会导致编译错误。
选项D中,func1是一个非静态成员函数,不能使用域操作符::来调用。正确的调用方式是通过对象来调用,如选项A所示。
#include<stdio.h> int mian() { int func( int a,int b ); int k = 4,m = 1,p; p = func(k,m); printf("%d",p); p = func(k,m); printf("%d\n",p); return 0; } int func( int a,int b ) { static int m = 0,i = 2; i += m + 1; m = i + a +b; return m; }解释
这段代码是一个简单的 C 语言程序,其中定义了一个名为 `func()` 的函数。程序的主函数 `main()` 中调用了 `func()` 函数两次,并输出了函数的返回值。
在 `func()` 函数中,定义了两个静态变量 `m` 和 `i`,并初始化为 `0` 和 `2`。在函数的执行过程中,变量 `i` 的值每次都会加上变量 `m` 和 `1`。变量 `m` 的值则是由变量 `i`、`a` 和 `b` 进行计算得到的。最终,函数返回变量 `m` 的值。
在主函数中,先将函数的返回值赋给变量 `p`,并输出变量 `p` 的值。然后再次调用函数,并将返回值再次赋给变量 `p`,再次输出变量 `p` 的值。注意,第二次调用函数时并没有改变变量 `k` 和 `m` 的值,因此第二次输出的结果与第一次相同。
阅读全文