Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否建议使用三元运算符?_C++ - Fatal编程技术网

C++ 是否建议使用三元运算符?

C++ 是否建议使用三元运算符?,c++,C++,在C中,我们可以使用三元 ( a == 4) ? a = b: a = 5; 有人告诉我最好不要用它,你怎么看?使用三元运算符是一种不好的方法(有更坏的方法,但那是一种不好的方法)。你应使用: a = (a == 4) ? b : 5; 区别在于,这显然是对a的赋值,三元运算符确定要赋值的值。在您的版本中,您必须查看三元运算符的内部,以查看它在两个分支中都分配给a。(使用三元运算符最糟糕的方法之一是(a==4)?a=b:b=5;分配给两个不同的变量。) 如果您觉得有必要编写嵌套的三元运算符,

在C中,我们可以使用三元

( 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.");

抄袭自:

这对可读性非常有害,对可读性非常有益:)也许它的可读性是衡量读者对编程的了解程度的一个指标。