我的代码中有一个小问题。我正在尝试计算输入中的最大数字,我想通过使用 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
?
最佳答案
您对 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];
}
展望 future ,确保将编译器的警告级别调到最高。我很确定大多数编译器会检测到您的语句没有效果,这会让您找到问题的根本原因。
希望这对您有所帮助!
关于c++ - 对数组排序后,为什么我看到的是地址而不是值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878040/