虽然以前学过三目运算符( 表达式1 ? 语句1 : 语句2 ),但是在学的时候并没有体验到三目运算符具体有什么作用。今天偶然看到一个教程,说到三目运算符可以用来简化 if 语句,思考了一下,确实可以。
比如:
当判断两个数m和n的大小时,可以用
int max = ( m > n ) ? m : n ;
而不需要下面这样
1 int max; 2 if( m > n ) 3 { 4 max = m; 5 } 6 else 7 { 8 max = n; 9 }
用 if 语句显然过于繁琐;然而三目运算符用于简化 if 语句时也有它的局限性 ----只能简化有两个出口的 if 语句,下面这个用于成绩分类的就不能够用三目运算符来简化了。
int score; cout << "请输入您的成绩:" << endl; cin >> score; if ( score >= 90 ) { cout << "您的成绩为优秀!" << endl; } else if ( 90 > score >= 80 ) { cout << "您的成绩为良好!" << endl; } else if ( 80 > score >= 70 ) { cout << "您的成绩为中等!" << endl; } else if ( 70 > score >=60) { cout << "您的成绩为合格!" << endl; } else { cout << "您的成绩不合格! " << endl; }
对于这种多分支语句,这时候最好选择switch语句来表达...当然如果非要用三目运算符来简化也不是不可以,只不过就要嵌套几层三目运算符了,可以思考一下,如果多个三目运算符嵌套会让别人读起代码来很困难,自己理解来也困难,不如用switch语句明显易懂。
