如何在 C++ 中使用嵌套的三元运算符

How to use nested ternary operators in C++

我正在尝试使用以下代码使用嵌套三元运算符,但它给出了错误的答案,我不明白错误是什么。

#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World\n";
int age, Result ;
cout<<"Enter age:";
cin>>age;

Result=age<0?-1
        :0<=age<=10?0
        :11<=age<=18?1
        :-2;
cout<<"Result is: "<<Result;

return 0;
}

对于 13 岁的输入,其给出的结果为 0,而对于 20 岁的输入,其给出的结果也为 0。我没有明白是什么错误。你可以帮帮我吗?谢谢你。

0<=age<=10 并没有按照您的想法去做。

假设您输入 11 岁。此代码段将 运行 检查 0 <= age,这是真的,因为年龄是 11。然后它将检查 true <= 10。 True 被转换成一个整数,所以检查是 1 <= 10,这是真的,所以你的三元组将 return 0.

将三元组更改为:

Result=                 (age < 0) ? -1
        : ((0<=age) && (age<=10)) ? 0
        :((11<=age) && (age<=18)) ? 1
        :       /*else*/           -2;