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