C++ 是否建议使用三元运算符?
在C中,我们可以使用三元C++ 是否建议使用三元运算符?,c++,C++,在C中,我们可以使用三元 ( a == 4) ? a = b: a = 5; 有人告诉我最好不要用它,你怎么看?使用三元运算符是一种不好的方法(有更坏的方法,但那是一种不好的方法)。你应使用: a = (a == 4) ? b : 5; 区别在于,这显然是对a的赋值,三元运算符确定要赋值的值。在您的版本中,您必须查看三元运算符的内部,以查看它在两个分支中都分配给a。(使用三元运算符最糟糕的方法之一是(a==4)?a=b:b=5;分配给两个不同的变量。) 如果您觉得有必要编写嵌套的三元运算符,
( a == 4) ? a = b: a = 5;
有人告诉我最好不要用它,你怎么看?使用三元运算符是一种不好的方法(有更坏的方法,但那是一种不好的方法)。你应使用:
a = (a == 4) ? b : 5;
区别在于,这显然是对a
的赋值,三元运算符确定要赋值的值。在您的版本中,您必须查看三元运算符的内部,以查看它在两个分支中都分配给a
。(使用三元运算符最糟糕的方法之一是(a==4)?a=b:b=5;
分配给两个不同的变量。)
如果您觉得有必要编写嵌套的三元运算符,那么您可能也在不适当地使用它。偶尔也可以,但不经常。实际上你应该写
a = (a == 4) ? b : 5;
关于三元ops的讨论对我来说总是很枯燥——可以找到一些很好的见解(TL;OP博士的例子:
return (a<b) ? (b<c) ? b : (a<c) ? c : a : (a<c) ? a : (b<c) ? c : b;
return(a条件运算符对于形成表达式很有用。如果需要依赖于条件的表达式,请使用它。不要使用它来生成语句。例如,您的代码可以是语句:
if (a == 4) { a = b; }
else { a = 5; }
也可以使用条件表达式编写,但习惯用法如下:
a = (a == 4 ? b : 5);
“?”:运算符可用作if…else语句的快捷方式。它通常用作if…else语句不方便使用的较大表达式的一部分
例如:
time_t t = time(0);
now = localtime( & t );
greeting = "Good" + ((now->tm_hour > 17) ? " evening." : " day.");
抄袭自:这对可读性非常有害,对可读性非常有益:)也许它的可读性是衡量读者对编程的了解程度的一个指标。