如何在 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;
我正在尝试使用以下代码使用嵌套三元运算符,但它给出了错误的答案,我不明白错误是什么。
#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;