c++ - 有没有办法将三元运算符与数组一起使用?

我试图编写一个算法,将 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 以了解将一个数组分配给另一个数组的更多方法,而不是运行循环。

https://stackoverflow.com/questions/13903388/how-to-assign-values-of-array-to-another-arraymaking-copy-in-c

相似文章

matlab - 将一系列不同的数字放入 fprintf

我正在MATLAB中编写一个函数,需要在fprintf中放入一个可变的数字范围。我需要它从1开始并达到矩阵的长度。但是,我认为应该起作用的不是给我连续的数字。A=[123;456;789]b=[2;4...

随机推荐

最新文章