我已经写出了代码,但我一直收到错误说:“错误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;
}
答案 0 :(得分:2)
您将zi_saptamana
声明为int
,但在此之后,不给它一个值(没有初始化),您使用它在switch
声明中。
请注意,zi_saptamana
(本地变量)的值在初始化之前是未定义的(可以是任何内容)。这同样适用于dar
。
这就是编译器告诉你的。
请注意,正如所评论的那样,这是未定义的行为,使得程序不再是一个格式良好的程序,并且编译器可以自由地执行它看起来合适的行为。在这种情况下(即此编译器),它会发出错误。
简单地说(没有&#34;标准&#34;):它是未定义的行为:程序其余部分的运行可能依赖于此变量,如果它不在已知状态,您可以&# 39;不知道会发生什么。这就是大多数编译器将其标记为错误的原因。
答案 1 :(得分:1)
你必须初始化变量zi_saptamana以使程序中的开关正常工作,只需将该语句置于切换之前: -
scanf("%d",&zi_saptamana);
它将从用户获取整数值,并且开关将根据此工作。