在C中,我们可以使用三元组
( a == 4) ? a = b: a = 5;
有人告诉我最好不要使用它,你觉得怎么样?
答案 0 :(得分:6)
条件运算符对于形成表达式非常有用。当你需要一个依赖于条件的表达式时使用它。不要用它来制作语句。例如,您的代码可以是一个声明:
if (a == 4) { a = b; }
else { a = 5; }
或者您可以使用条件表达式编写它,但是惯用法是这样的:
a = (a == 4 ? b : 5);
答案 1 :(得分:3)
其实你应该写
a = (a == 4) ? b : 5;
关于三元操作的讨论对我来说似乎总是很无聊 - 可以找到一些好的见解here(TL; DR OP的例子:
return (a<b) ? (b<c) ? b : (a<c) ? c : a : (a<c) ? a : (b<c) ? c : b;
可能是这样一种情况,使用三元操作并不是一个好主意,如果你问我,就像你的那样有助于提高可读性。
答案 2 :(得分:1)
这是使用三元运算符的一种不好的方法(有更糟糕的方法,但那个方法很糟糕)。你应该使用:
a = (a == 4) ? b : 5;
不同之处在于,这显然是对a
的赋值,而三元运算符决定了要赋值的值。在您的版本中,您必须查看三元运算符的内部,以确定它在两个分支中分配给a
。 (使用三元运算符的一种更糟糕的方法是(a == 4) ? a = b : b = 5;
分配两个不同的变量。)
如果您觉得需要编写嵌套的三元运算符,那么您也可能不恰当地使用它。偶尔会好的,但不是很常见。
答案 3 :(得分:0)
?:运算符可用作if ... else语句的快捷方式。它通常用作较大表达式的一部分,其中if ... else语句会很笨拙。
例如:
time_t t = time(0);
now = localtime( & t );
greeting = "Good" + ((now->tm_hour > 17) ? " evening." : " day.");
复制自:http://msdn.microsoft.com/en-us/library/be21c7hw%28v=vs.94%29.aspx