對於多層三目運算符,從右往左看
#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; }