C ++:使用错误C4700未初始化的局部变量“”

时间:2016-07-20 01:40:14

标签: c++

我已经写出了代码,但我一直收到错误说:“错误C4700 unititalized local变量”zi_saptamana“使用。”错误C4700未初始化的局部变量“dar”使用。我之前已经完成了If / if-else / else嵌套,但我从未遇到过这个错误。我是C ++的新手,还在学习。

#include <iostream>
#include <conio.h>

using namespace std;

int main() {
    int zi_saptamana, a, s, d, f, g, h, j; char dar;

    switch (zi_saptamana)
    {
    case 1:
        cout << " a"; cin >> a;
        break;
    case 2:
        cout << " s"; cin >> s;
        break;
    case  3:
        cout << " d"; cin >> d;
        break;
    case 4:
        cout << "  f"; cin >> f;
    case 5:
        cout << "  g"; cin >> g;
    case 6:
        cout << " h"; cin >> h;
    case 7:
        cout << "  j"; cin >> j;
    default:
        cout << " nu stiu ce zi este aceasta te rog sa alegi o zi de la 1 la 7";
        break;
    }
    cout << " ce zi a saptamanii doresti?";
    cin >> zi_saptamana;
    cout << " doresti sa alegi o alta zi din saptamana ??\n_> ";
    if (dar == 'y' || dar == 'Y');
    {
        main();
    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您将zi_saptamana声明为int,但在此之后,不给它一个值(没有初始化),您使用它在switch声明中。

请注意,zi_saptamana(本地变量)的值在初始化之前是未定义的(可以是任何内容)。这同样适用于dar

这就是编译器告诉你的。

请注意,正如所评论的那样,这是未定义的行为,使得程序不再是一个格式良好的程序,并且编译器可以自由地执行它看起来合适的行为。在这种情况下(即此编译器),它会发出错误。

简单地说(没有&#34;标准&#34;):它是未定义的行为:程序其余部分的运行可能依赖于此变量,如果它不在已知状态,您可以&# 39;不知道会发生什么。这就是大多数编译器将其标记为错误的原因。

答案 1 :(得分:1)

你必须初始化变量zi_saptamana以使程序中的开关正常工作,只需将该语句置于切换之前: -

scanf("%d",&zi_saptamana);

它将从用户获取整数值,并且开关将根据此工作。