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

时间:2018-01-24 01:21:09

标签: c++ ternary-operator

我试图使用嵌套的三元运算符使用以下代码,但它给出了错误的答案,我没有得到错误的是什么。

#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.我没有得到什么是错误。你可以帮帮我吗?谢谢。

1 个答案:

答案 0 :(得分:3)

0<=age<=10没有按照你的想法行事。

假设您输入的是11岁。此代码段会运行支票0 <= age,因为年龄为11,这是真的。然后它会检查true <= 10。 True会被转换为整数,因此检查为1 <= 10,这是真的,因此您的三元组将返回0.

将三元组更改为:

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