C++中有一个需要注意的操作符,这个操作符石C++中唯一的三元操作符,这个操作符就是条件操作符。
用法:
cond ? value1 : value2;
简介:
这个表达式的求解顺序是计算cond的值是否等于0,如果等于0(也就是false),那么返回value2(如果value2是一个表达式,那么计算表达式的值并返回计算结果),否则返回value1(如果value2是一个表达式,那么计算表达式的值并返回计算结果)。
使用三元操作符的时候需要注意以下几点:
(1)避免三元操作符的深度嵌套。如下,虽然对于程序猿来说比较高大上,但是如果自己疏忽某些地方可能造成意想不到的结果,另外这样的代码可读性下降。
int value = i > j ? i > k ? i : k : j > k ? j : k;
分析上边的表达式的时候我们需要遵循一个原则:三元操作符需要 ?和:作为一个整体。根据从左向右看的原则,第一个问号和倒数第二个冒号匹配.
(2)条件表达式的优先级相对比较低,最好把这个操作符所做的操作用一个括号括起来。这样一方面避免忽略操作符的优先级造成意想不到的结果,同时使得代码可读性提高。下边列举几个primer上的例子:
cout << (i < j ? i : j);// ok: prints larger of i and j cout << (i < j) ? i : j;// prints 1 or 0! cout << i < j ? i : j;// error: compares cout to int
第一个表达式没有什么问题。
第二个表达式就有问题了,他把i和j的比较结果作为cout的操作数,输出0或者1,然后把cout的操作结果作为条件来判断三元操作符的结果。如果cout的值不等于0,那么返回三元操作符的结果是i,否则为j。
本文出自 “家和万事兴” 博客,请务必保留此出处http://louis1126.blog.51cto.com/2971430/1679183
原文地址:http://louis1126.blog.51cto.com/2971430/1679183