我一直想知道如何用C ++兼容语言编写 "A ? B : C"
语法。
我认为它的作用类似于:(伪代码)
If A > B
C = A
Else
C = B
任何资深的C ++程序员都会帮帮我吗?
答案 0 :(得分:57)
它的工作原理如下:
(condition) ? true-clause : false-clause
它最常用于赋值操作,尽管它也有其他用途。三元运算符?
是缩短if-else子句的一种方法,在其他语言中也称为immediate-if语句(例如,VB中为IIf(condition,true-clause,false-clause)
)。
例如:
bool Three = SOME_VALUE;
int x = Three ? 3 : 0;
与
相同bool Three = SOME_VALUE;
int x;
if (Three)
x = 3;
else
x = 0;
答案 1 :(得分:12)
它的工作原理如下:
expression ? trueValue : falseValue
这基本上意味着如果expression
的计算结果为true,则返回或执行trueValue,否则将返回或评估falseValue。
请记住,只有表达式为true或false时,才会评估和执行trueValue和falseValue。这种行为称为短路。
答案 2 :(得分:4)
在c ++中,没有实际的部分内容。它被称为三元运算符。它的用法如下:< boolean statement> ? < result if true> :< result if false&gt ;;对于上面的例子,它看起来像这样:
C = A > B ? A : B;
维基百科上的这篇文章也讨论了它: http://en.wikipedia.org/wiki/Ternary_operation
答案 3 :(得分:2)
我认为你的意思是a = b? c:d,其中b是条件,c是b为真时的值,d是b为假时的值。
答案 4 :(得分:1)
我会说的?是一个捷径。但是,一些“硬核”程序员倾向于说长篇大论,所以在未来的情况下,人们可以轻松地阅读和修改代码。
例如,如果你写
int a = b<c ? b : c;
有些人声称写起来更清楚:
if(b<c)
a = b;
else
a = c;
因为在将来的情况下,人们可以抓住它。当然,一个简单的b&lt; c? b:c很容易捕获,但有时会输入复杂的操作,很难发现。
答案 5 :(得分:1)
似乎没有人提到条件运算符表达式的结果可以是C ++中的L值(但不是C语言中)。以下代码在C ++中编译并运行良好:
int a, b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
以上程序打印3
然而,如果a和b的类型不同,它就不会起作用。以下代码给出了编译器错误:
int a;
double b;
bool cond;
a=1; b=2; cond=true;
(cond? a : b) = 3;
cout << a << "," << b << endl;
答案 6 :(得分:0)
非常简单 它的基本语法是: ?表达式表达式2:表达式3;
如果表达式1保持为真,则表达式2将保持,否则表达式3将保持。
示例:
hey=24>2?24:34;
此处条件为真值24将分配给它。 如果它是假的,那么34将被分配给它
答案 7 :(得分:0)
只需将其写为
即可
C =(A&GT; B)A:B;
这就是:
if(A>B)
C=A;
else
C=B;
答案 8 :(得分:0)
这称为“三元运算符”,而?
和:
是编写if-else语句的另一种方式。
查看此Codepen中的“示例#1”,然后取消注释...您会注意到它的作用。
现在注释“ Example#1”,取消注释“ Example#2”,然后看看会发生什么。该代码执行的操作完全相同……但是这次只有5行代码。请注意,?
之前出现的是if
(有条件的),而:
之后出现的是要执行的东西。
但是,如果您有一个条件需要“ else-if”(可能有两个以上的结果),如Codepen的“ Example#3”中的条件(会增加用户写下特定错误答案的可能性)怎么办)?这样一来,三元运算符可能就没有那么有用了,但是您肯定可以使用三元运算符来连接多个条件,例如在此ES6 fizzbuzz示例中。
答案 9 :(得分:0)
就像这是我们的条件 -> A?B:C 因此,根据条件,如果“A”为真,则打印“B”,如果“A”为假,则打印“C”。 换句话说,我们也可以说它是 if else 条件的另一种方式。