cout<< 理论上它有效的未知编译器错误

Unknown compiler error in cout<< theoreticlly it works

#include <iostream>
using namespace std;

void matrice(int n){


cout<<"Input the number of the elements "<<endl;
cin>>n;
int D[n][n];
cout<<"Input the elements :";
for(int i=0;i<n;i++){
  for(int j=0;j<n;j++){
        cin>>D[i][j];

  }
}
int min;
for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
            if( min=0>D[i-1][j-1]){
        D[i-1][j-1]=min;
    }
    }
}
cout<<" The smallest element is : "<< min<<"and it is the"<< i <<" element ."  ;
}


int main(){
int i, min ,j,n;

int n1;
    cout<<"Decide: "<<endl;
    cout<<"Matrice[1]"<<"\t"<<"Vekcor[2]"<<endl;
cin>>n1;
if(n1==1){
    matrice(n);
}
else if(n1==2){
}
}



问题出在 cout 的第 22 行,它给出了以下消息: C:\Users\use\Documents\Dev C++\void_vektor.cpp|22|错误:'operator<<' 不匹配(操作数类型为 'std::basic_ostream' 和 '')|

主要问题是您在 for 循环中声明 min,它会在循环退出时超出范围。

奇怪的错误消息可能是因为 std::min 函数。这是一个关于为什么不使用 using namespace std;.

的很好的案例研究

乍一看,您的代码中还有其他问题:

  • iminjmain() 中未使用。

  • n未初始化使用,这是undefined behaviour, furthermore C++ forbids variable-size array. If you need a variable length array you can use something like std::vector.

  • if(min = 0 > D[i-1][j-1])很奇怪,真的是你需要的吗?

以后你应该使用编译器警告。

这里有一个基本问题:main 中的调用 matrice(n) 使用了 n 的未初始化值,所以如果你的编译器支持 int D[n][n] 语法,你就没有知道数组实际有多大。形式上,行为是未定义的。非正式地,您有 50/50 的机会得到负数,这作为数组大小没有意义。

min 仅在 for 循环范围内可见,因为您已在循环内声明它。

在此处声明:

int min=D[0][0];
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (min > D[i - 1][j - 1])
            {
                D[i - 1][j - 1] = min;
            }
        }
    }
    cout << " Elementi me i vogel eshte : " << min;

另请注意,您在 main 中使用了未初始化的 n,即使您将其作为函数的输入,向函数发送未初始化的变量也可能会出现问题。

并在将 n 作为输入后移动 int D[n][n]; 的声明。

cout<<"Input the number of the elements "<<endl;
cin>>n;
int D[n][n];

我建议这个更简单,而不是你的循环:

int min=D[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (min > D[i][j])
            {
                D[i][j] = min;
            }
        }
    }
    cout << " Elementi me i vogel eshte : " << min;

另请注意,如果您初始化 min=0,则无法在包含所有 elements>0 的数组中找到 min。我建议 min=[0][0]