我的代码中有一个小问题。我正在尝试计算输入中的最大数字,我想通过使用std::sort()
来尝试它。现在我有这个代码,它输出最大数字的地址而不是最大数字本身的地址:
#include<bits/stdc++.h>
using namespace std;
int main(){
int arr[3];
for(int i=0;i<3;++i){
int x;
cin >> x;
arr[x];
}
sort(arr, arr + 3, greater<int>());
cout << arr[0] << endl;
}
我在这里做错了什么?我是否错误地呼叫sort
?
答案 0 :(得分:1)
您对sort
的调用是正确的,但您的数组初始化不正确。你在写
for(int i=0;i<3;++i){
int x;
cin>>x;
arr[x];
}
最后一句话arr[x];
无效。你所翻译的地址是一个垃圾值,恰好恰好位于数组的第一个位置。
我认为你打算写
arr[i] = x;
一旦你这样做,一切都应该开始工作。
更好的是,试着写下这个:
for(int i=0;i<3;++i){
cin >> arr[i];
}
继续前进,确保将编译器的警告级别调高到最大值。我很确定大多数编译器会检测到你的语句没有效果,这会让你知道问题的根本原因。
希望这有帮助!