在有些if语句中,当表达式值为0或非0时,均只执行一个赋值语句且向同一个变量赋值。此时可用条件运算符,此处的条件表达式可代替if语句。
条件运算符是两个符号(?和:)的组合,是C语言中唯一的三目运算符。条件表达式的一般形式为:
条件表达式的执行顺序:
(1)求解表达式1。
(2)若表达式1的值为非0,则求解表达式2,并将表达式2的值作为整个条件表达式的值。
(3)若表达式1的值为0,则求解表达式3,并将表达式3的值作为整个条件表达式的值。
说明:
(1)条件运算符优先级高于赋值、逗号运算符,低于其他运算符。例如:
1)m<n ? x : a+3 等价于(m<n) ?x : (a+3)
2)a ++>=10&&b-->20 ? a : b 等价于(a ++ >= 10 && b-->20) ?a:b(www.daowen.com)
3)x=3+a>5 ? 100 : 200 等价于x=( ( 3+a>5 ) ? 100 :200 )
(2)当一个表达式中出现多个条件运算符时,结合方向为自右至左,即应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。例如:
w <x ? x +w : x <y ? x : y 等价于w<x?x+w : ( x<y?x : y)
(3)“表达式2”和“表达式3”可以是数值表达式、赋值表达式或函数表达式。例题4.1和例题4.3可结合条件运算符来实现,如表4-4所示。
表4-4 if语句和条件运算符使用对比
续表
注:判断一个字母是否是大写字母,可以通过判断该字母是否介于'A'到'Z'之间,即是否满足逻辑表达式ch >='A' && ch <='Z'。大写字母转换成小写字母的方法,就是给该字母的ASCII值增32。
可见,条件表达式相当于一个不带关键字if的if语句,用它处理简单的选择结构可使程序更简洁。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。