【发布时间】:2015-05-18 08:41:15
【问题描述】:
排序后我得到奇怪的输出
如果使用scanf 提供输入,则该行会导致错误。输出有一些奇怪的排列。 (我已评论该行)
如果我使用cin,输出就可以了。在线编译器中也不存在此问题。同样的事情发生在不同的计算机上。
例如,如果我输入
5
23 44 32 2 233
输出是
32 23 233 2 44
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
int main()
{
unsigned long long int n=0,i=0;
// cin>>n;
scanf("%llu",&n);
unsigned long long int arr[n];
for(i=0;i<n;i++)
{
// cin>>arr[i]; //if use this no error but if use next line it is
scanf("%llu",&arr[i]); //causing error
}
sort(arr,arr+n);
for(i=0;i<n;i++)
{
// cout<<arr[i]<<" ";
printf("%llu ",arr[i]);
}
return 0;
}
【问题讨论】:
-
您是否尝试在调试器中单步执行代码?
-
看看 Michael Burr 对Strange “unsigned long long int” behaviour的回答
-
@swapnilansh 就我而言,如果编译器支持可变长度数组,它会很好地工作。
-
@swapnilansh 另外我确信这个问题与 scanf 没有什么共同点,因为输出显示了正确的值,尽管它们没有在您的帖子中排序。
-
您使用的是什么编译器/环境?