C++编程问题请大神赐教谢谢

请问下面函数为什么提示错误:使用了未初始化的局部变量“c”

#include "stdafx.h"
#include
using namespace std;
int fib(int n);

int main()
{
int k = fib(10);
cout << "k=:" << k;
return 0;
}

int fib(int n) {
int c;
if (n ==1||c == 2 )
c = 1;
if (n > 2)
c = fib(n - 1) + fib(n - 2);
else
0;
return c;

}

int c;
if (n ==1||c == 2 )
没有初始化就用了 c

新的c++编译器,会更加严格地检查你的程序(可以防止你疏忽造成错误)
int c;
这里没有初始化,可以用
int c = 0;

早期的编译器,这么写不会报错。

返回值是拷贝值,局部变量的作用域为函数内部,函数执行结束,栈上的局部变量会销毁,内存释放。

int c定义时没有初始化,就直接判断了,所以会报错.

改函数第二行如下:
int fib(int n) {
int c = 0;
if (n ==1||c == 2 )
c = 1;
if (n > 2)
c = fib(n - 1) + fib(n - 2);
else
0;
return c;

}