繁体   English   中英

全局变量在主C ++中调用时会丢失其值

[英]global variable loses its value when its called in main C++

我应该计算一下递归函数被调用的次数,所以我尝试制作一个全局变量以使其在函数中计数,然后在main函数中调用它,它可以正常工作,但是当在main中调用它时,它的值不起作用改变原因

#include <iostream>
using namespace std;

int y;

long fib(int n){
    static int x = -1;
    x++;
    y = x;
    cout << y << endl;
    if (n == 1){
        return 1;
    }
    else if (n == 0){
        return 0;
    }

    else
        return fib(n - 1) + fib(n - 2);
}

int main(){
    int N, X;
    cin >> N;
    while (N != 0){
        cin >> X;
        cout << "fib(" << X << ") = " <<fib(X) << " calls = "<< y << endl;
        N--;
    }
    system("pause");
}

在该行中:

cout << "fib(" << X << ") = " <<fib(X) << " calls = "<< y << endl;

fib(X)y之间没有排序关系。 允许您的编译器在调用fib(X)之前或之后读取y (但不在此期间!)

要解决此问题,请更改为:

cout << "fib(" << X << ") = " << fib(X);
cout << " calls = "<< y << endl;

这是规则的一种特殊情况,即函数调用的参数之间没有顺序(请记住,重载运算符实际上是对重载运算符的调用)。 例如,在func( a(), b() ); ab可以按任意顺序调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM