我试图编写一个算法,将 2 个数字作为输入并使用三元运算符按升序输出它们,但在 20:24 行它告诉我:
错误:无效的数组赋值
有人能帮我吗?
#include <iostream>
using namespace std;
int main()
{
int a, b;
int c[2];
int d[2];
int e[2];
cout << "inserire il primo numero: ";
cin >> a;
cout << "inserire il secondo numero: ";
cin >> b;
c[0] = b;
c[1] = a;
d[0] = a;
d[1] = b;
e = (a > b) ? c : d;
cout << e;
}
回答1
只要左边有合适的=
操作符,就可以写出这条语句。当您尝试更改其指针时,C 样式数组没有此功能。 https://en.cppreference.com/w/cpp/language/array。
您可以使用 std::array<int, 2>
,它具有 operator=
并提供许多好处(https://en.cppreference.com/w/cpp/container/array):
#include <iostream>
#include <array>
int main() {
int a, b;
std::array<int, 2> c;
std::array<int, 2> d;
std::array<int, 2> e;
std::cout << "inserire il primo numero: ";
std::cin >> a;
std::cout << "inserire il secondo numero: ";
std::cin >> b;
c = { b, a };
d = { a, b };
e = (a > b) ? c : d;
for (auto& i : e) {
std::cout << i << ' ';
}
}
阅读https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice为什么你不应该use namespace std;
。
回答2
三元运算符工作正常。在您的代码中,问题在于分配数组。您不能分配这样的数组。
您可以遵循的方法之一:
#include <iostream>
using namespace std;
int main()
{
int a, b;
int c[2];
int d[2];
int e[2];
cout << "inserire il primo numero: ";
cin >> a;
cout << "inserire il secondo numero: ";
cin >> b;
c[0] = b;
c[1] = a;
d[0] = a;
d[1] = b;
(a > b) ? memcpy(e, c, sizeof c) : memcpy(e, d, sizeof d);
cout << e[0] << " " << e[1] << endl;
}
请查看以下 URL 以了解将一个数组分配给另一个数组的更多方法,而不是运行循环。