对于多层三目运算符,从右往左看
#include <iostream> #include <string> int main() { std::string level ; unsigned grade = 0 ; grade = 99 ; level = (grade>90) ? "高分飘过" : (grade<60) ? "真鸡儿菜,挂科了" : "及格万岁"; std::cout<<level<<std::endl; grade = 88 ; level = (grade>90) ? "高分飘过" : (grade<60) ? "真鸡儿菜,挂科了" : "及格万岁"; std::cout<<level<<std::endl; grade = 59 ; level = (grade>90) ? "高分飘过" : (grade<60) ? "真鸡儿菜,挂科了" : "及格万岁"; std::cout<<level<<std::endl; return 0; }
切记,由于三目运算符优先级比较低,通常括号全部括起来
#include <iostream> #include <string> int main() { //错误,输出60,返回cout引用,用cout和50比较,出错 //std::cout<< 60>50 ? "C++" : "完美" ; //可以运行,但是有错。输出0或者1,返回cout,用cout作为条件得到其中一个字符串字面值 std::cout<<(60>50)? "钟爱C++" : "钟爱Basic" ; std::cout<<std::endl; //切记,由于三目运算符优先级比较低,通常括号全部括起来 std::cout<<((60>50)?"钟爱C++":"钟爱Basic"); return 0; }