C++条件运算符(? :)

时间:2014-10-13 20:47    点击:

若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且给同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句:
    if (a>b) max=a;
    else max=b;
可以用条件运算符(? :)来处理:
    max=(a>b)?a:b;
其中“(a>b)?a:b”是一个“条件表达式”。它是这样执行的:如果(a>b)条件为真,则条件表达式的值就取“?”后面的值,即条件表达式的值为a,否则条件表达式的值为“:”后面的值,即b。

条件运算符要求有3个操作对象,称三目(元)运算符,它是C++中惟一的一个三目运算符。条件表达式的一般形式为:
    表达式1 ? 表达式2 : 表达式3;
条件运算符的执行顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。“max=(a>b)?a:b” 的执行结果是将条件表达式的值赋给max。也就是将a和b二者中的大者赋给max。条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。

条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。如
   x ? 'a': 'b';
如果已定义x为整型变量,若x=0,则条件表达式的值为字符'b'的ASCII码。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如有条件表达式x>y?1:1.5,如果x≤y,则条件表达式的值为1.5,若x>y,值应为1,由于C++把1.5按双精度数处理,双精度的类型比整型高,因此,将1转换成双精度数,以此作为表达式的值。

【例3.7】输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。


		
  1. #include <iostream>
  2. using namespace std;
  3. int main( )
  4. {
  5. char ch;
  6. cin>>ch;
  7. ch=(ch>='A' && ch<='Z')?(ch+32):ch; //判别ch是否大写字母,是则转换
  8. cout<<ch<<endl;
  9. return 0;
  10. }

来源:未知//所属分类:基础教程/更新时间:2014-10-13 20:47
顶一下
(0)
0%
踩一下
(0)
0%
上一篇:C++ if else语句及其嵌套(选择结构)
下一篇:C++ switch语句(多选分支结构)
相关内容