多层三目运算符

对于多层三目运算符,从右往左看

#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;
}

 

 

posted @ 2016-12-01 15:43  郭志凯  阅读(4698)  评论(0编辑  收藏  举报