代码中的汇编错误

compilation error in code

本文关键字:错误 汇编 代码      更新时间:2023-10-16

我已经编写了以下程序,并且有一些汇编错误

错误:

  1. prog.cpp:在函数'int main()'中:
  2. prog.cpp:13:错误:为'scoping for'i'更改'i'的名称查找
  3. prog.cpp:9:错误:在'i''
  4. 上使用过时的绑定

,我的序言正在按照持久的顺序进行排序:

#include<iostream>  
using namespace std;  
int main()  
{  
    int temp,t,a[10];  
    cin>>t;  
    for(int i=0;i<t;i++)  
    {  
        cin>>a[i];  
    }  
    for(i=0;i<t;i++)  
    {  
        int j=i+1;  
        for( ;j<t;j++)  
        {  
            if(a[i]>a[j])  
            {  
                temp=a[i];  
                a[i]=a[j];  
                a[j]=temp;  
            }  
        }  
    }  
    for(i=0;i<t;i++)  
    {  
        cout<<a[i]<<endl;  
    }  
    return 0;  
}  

您已经在for循环内声明了i

for(int i=0;i<t;i++)

因此,i的范围仅限于该for循环。i不存在于该 for循环。

所以,当您尝试重复使用下一个for中的i

for(i=0;i<t;i++)  

您会有错误。您必须再次声明i

for(int i=0;i<t;i++)

您上次for循环中的同一件事。如果您正确缩进代码,也将非常有帮助。


#include<iostream>  
using namespace std;  
int main()  
{  
    int temp,t,a[10];  
    cin>>t;  
    for(int i=0;i<t;i++)  
    {  
        cin>>a[i];  
    }  
    for(int i=0;i<t;i++)  
    {  
        int j=i+1;  
        for( ;j<t;j++)  
        {  
            if(a[i]>a[j])  
            {  
                temp=a[i];  
                a[i]=a[j];  
                a[j]=temp;  
            }  
        }  
    }  
    for(int i=0;i<t;i++)  
    {  
        cout<<a[i]<<endl;  
    }  
    return 0;  
}

您仅在第一个循环中声明i。该变量的声明仅是该循环的本地,这意味着i不会存在于循环之外。

而不是:

for(i=0;i<t;i++)

尝试

for(int i=0;i<t;i++)

问题在于您的'i'变量。

如今,在" for"语句中声明的变量仅在" for"块中使用,而不是在" block"外部。

您忘了在开始中声明所有变量。因此,这样的方式将变量声明为本地整数,并且不能在for loop之外使用。我尝试在函数int main()之外声明它们,并且有效正确的代码:

#include<iostream>
using namespace std;
int i = 0;
int a[10];
int temp = a[i];
int t;
int main()
{
    cin>>t;
    for(int i=0;i<t;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<t;i++)
    {
        int j=i+1;
        for( ;j<t;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for(i=0;i<t;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}

您的问题是您在功能范围内声明i。您可以决定是否要在主处声明我一次,还是每次为 for范围内的本地范围变量。

#include<iostream>  
using namespace std;  
int main()  
{  
    int temp, t, a[10];  
    cin >> t;  
    int i;
    for(i=0; i<t ; i++)  
    {    
        cin >> a[i];  
    }  
    for(i=0; i<t; i++)  
    {  
        for(int j=i+1; j<t; j++)  
        {  
             if (a[i]>a[j])  
             {  
                 temp=a[i];  
                 a[i]=a[j];  
                 a[j]=temp;  
             }  
        }  
    }  
    for(i=0; i<t; i++)  
    {  
         cout << a[i] << endl;  
    } 
    return 0;  
}