我试图使用嵌套的三元运算符使用以下代码,但它给出了错误的答案,我没有得到错误的是什么。
#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 :(得分: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;