C++ 我得到了一个作用域错误和未初始化错误的同一个变量 intmain(){ int a,b,num,y; cin>>num; 开关(num){ 案例1:soi_cout(); cin>>num; 如果(num==1){ ab_cout(); cin>>a; cin>>b; 对于(int i=a;i>num; 开关(num){ 案例1:soi_cout(); cin>>num; 如果(num==1){ ab_cout(); cin>>a; cin>>b; 对于(int i=a;i

C++ 我得到了一个作用域错误和未初始化错误的同一个变量 intmain(){ int a,b,num,y; cin>>num; 开关(num){ 案例1:soi_cout(); cin>>num; 如果(num==1){ ab_cout(); cin>>a; cin>>b; 对于(int i=a;i>num; 开关(num){ 案例1:soi_cout(); cin>>num; 如果(num==1){ ab_cout(); cin>>a; cin>>b; 对于(int i=a;i,c++,C++,我不明白这个“y”是干什么的?你没有用这个变量输出任何东西 但是对于你的问题,就像错误75告诉你的,你应该初始化这个变量。 例如: int main(){ int a, b, num; cin >> num; switch (num){ case 1: soi_cout(); cin >> num; if(num == 1){ ab_cout(); cin >> a;

我不明白这个“y”是干什么的?你没有用这个变量输出任何东西

但是对于你的问题,就像错误75告诉你的,你应该初始化这个变量。 例如:

int main(){
  int a, b, num;
  cin >> num;
  switch (num){
    case 1: soi_cout();
      cin >> num;
      if(num == 1){
        ab_cout();
        cin >> a;
        cin >> b;
        for(int i=a; i<=b; i++){
          y += y1(i);
          return 0;
        }

        return 0;
      }
    return 0;
  }

  return 0;
}
63 int main(){
64整数a,b,num,y;
65 cin>>num;
66开关(数字){
67
68案例1:soi_cout();
69 cin>>num;
70如果(num==1){
71 ab_cout();
72 cin>>a;
73 cin>>b;
y=0;//或任何要初始化的数字

74对于(inti=a;i第一个业务订单,您必须使用它,所以您需要声明变量。这将修复您的第二个错误

63 int main(){
 64     int a, b, num, y;
 65     cin >> num;
 66 switch (num){
 67
 68     case 1: soi_cout();
 69             cin >> num;
 70                     if(num == 1){
 71                         ab_cout();
 72                         cin >> a;
 73                         cin >> b;
                            y = 0;  //or any number you want to initialize
 74                         for(int i=a; i<=b; i++){
 75                         y += y1(i);//you can't just declare this 'y' because you used it in there
 76                         return 0;
 77                         }
 78
 79                         return 0;
 80                     }
 81                     return 0;
 82                 }
 83
 84
 85 return 0;
 86 }
而不是

int y = 0

你的问题就解决了。

你需要声明并初始化它。它不是/or。删除行号可能有助于其他人轻松复制和执行。@JonathanPotter这两种方法我该怎么做?
int y=0;
是一种方法。顺便说一句@SamR。你似乎误解了
返回0;
。当你的程序到达第一行时,它将退出在此声明中。忽略警告是错误的建议,这是有原因的。在这种情况下,OP的代码将导致
y
包含一个“垃圾”值。我没有说你应该;)谢谢@MatthäusBrandl的建议我修正了我的答案以反映它。
int main(){
  int a, b, num;
  int y; // THIS FIXES SECOND ERROR YOU HAVE
  y = 0; // THIS FIXES FIRST ERROR YOU HAVE

  cin >> num;
  switch (num){
    case 1: soi_cout();
      cin >> num;
      if(num == 1){
        ab_cout();
        cin >> a;
        cin >> b;
        for(int i=a; i<=b; i++){
          y += y1(i);
          return 0;
        }

        return 0;
      }
    return 0;
  }

  return 0;
}
int y = 0
int y;