C++ 长写时的分段错误
当我写long-long而不是int时,我遇到了分段错误。。我该怎么办?这是我的密码C++ 长写时的分段错误,c++,C++,当我写long-long而不是int时,我遇到了分段错误。。我该怎么办?这是我的密码 #include<bits/stdc++.h> using namespace std; int main() { int n,a[n],i,count=0,c=0,c1=0,j; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n); int r=
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[n],i,count=0,c=0,c1=0,j;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int r=a[n-1]-a[0];
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(abs(a[j]-a[i])==r)
count++;
}
}
cout<<r<<" "<<count<<endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
int n,a[n],i,count=0,c=0,c1=0,j;
cin>>n;
对于(i=0;i>a[i];
}
排序(a,a+n);
int r=a[n-1]-a[0];
对于(i=0;i此处:
在初始化之前,您正在使用n
。在声明n大小的数组之后,从用户读取n
是非常无用的。您应该使用std::vector
。例如
size_t n;
std::cin >> n;
auto a = std::vector<int>(n);
size\n;
标准:cin>>n;
自动a=标准::向量(n);
int n,a[n],…
这会在n尚未获得值时创建一个大小为n的数组。在获得n的有效值后,需要行int a[n];
。即使如此,这也是一个(shitty)扩展名。改用std::vector
。#包括使用名称空间std;
这两行都不是你的朋友。此外a[n]
是一个编译器扩展;不要这样做,因为对它的支持可以随时在该编译器上删除;以及其他编译器可能不支持它的事实。您应该使用valgrind来调试您的程序。我很确定有很多错误(条件跳转等)以及为什么使用C++来像C一样呢?正如@ MikeVine所说的,你应该使用STD::vector,而不是[n]。
size_t n;
std::cin >> n;
auto a = std::vector<int>(n);