39

我一直想知道如何"A ? B : C"用 C++ 兼容的语言编写语法。

我认为它的工作原理类似于:(伪代码)

If A > B
   C = A
Else
   C = B

请任何资深的 C++ 程序员帮帮我吗?

4

10 回答 10

67

它是这样工作的:

(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;
于 2008-12-25T16:34:48.797 回答
12

它是这样工作的:

expression ? trueValue : falseValue

这基本上意味着如果expression评估为 true,则将返回或执行 trueValue,否则将返回或评估 falseValue。

请记住,trueValue 和 falseValue 仅在表达式分别为 true 或 false 时才会被评估和执行。这种行为称为短路。

于 2008-12-25T16:32:43.467 回答
4

在 c++ 中没有实际的 if 部分。它被称为三元运算符。它是这样使用的: <boolean statement> ?<result if true> : <result if false>; 对于上面的示例,它看起来像这样:

C = A > B ? A : B;

维基百科上的这篇文章也讨论了它: http ://en.wikipedia.org/wiki/Ternary_operation

于 2008-12-25T16:31:28.880 回答
2

我假设您的意思是 a = b 之类的东西?c : d,其中 b 是条件,c 是 b 为真时的值,d 是 b 为假时的值。

于 2008-12-25T16:31:04.983 回答
1

我会说?是一个捷径。然而,一些“铁杆”程序员倾向于将其写出来,以便在未来的情况下,人们可以轻松地阅读和修改代码。

例如,如果你写

int a = b<c ? b : c;

有些人声称这样写更清楚:

if(b<c)
 a = b;
else
 a = c;

因为在未来的情况下,人们可以抓住它。当然,一个简单的 b<c ? b:c 很容易捕捉,但有时会进行复杂的操作,很难发现。

于 2010-05-06T18:29:30.467 回答
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, 2

然而,如果 a 和 b 是不同的类型,它就行不通了。以下代码给出了编译器错误:

    int a;
    double b;
    bool cond;
    a=1; b=2; cond=true;
    (cond? a : b) = 3;
    cout << a << "," << b << endl;
于 2014-09-18T02:19:47.700 回答
0

很简单它的基本语法是:expression1?expression2:expression3;

如果表达式 1 为真,则表达式 2 将成立,否则表达式 3 将成立。

例子:

hey=24>2?24:34;

在这里,条件为真值 24 将分配给它。如果它是假的,那么 34 将被分配给它

于 2017-10-23T12:01:25.807 回答
0

简单地你可以把它写成

C=(A>B)?A:B;

这与以下内容相同:

if(A>B)

 C=A;

else

 C=B;
于 2017-12-03T07:18:49.400 回答
0

这称为“三元运算符”,?and:是另一种编写 if-else 语句的方式。

查看此Codepen中的“示例 #1” ,然后取消注释...您会注意到它的作用。

现在评论“Example #1”,取消评论“Example #2”,看看会发生什么。代码做了完全相同的事情......但这次只有 5 行代码。注意?符号之前出现的东西是if(有条件的),之后出现:的东西是要执行的东西。

但是,如果您有一个条件,需要像 Codepen 的“示例 #3”(这增加了用户写出特定错误答案的可能性)中的“else-if”(具有超过 2 种可能的结果),该怎么办?那么三元运算符可能就没那么有用了,但你当然可以将几个条件与三元运算符连接起来,就像这个 ES6 fizzbuzz示例一样。

于 2020-10-01T02:26:57.070 回答
0

就像这是我们的条件 - > A?B:C 所以根据条件,如果“A”为真,则打印“B”,或者如果“A”为假,则打印“C”。换句话说,我们也可以说它是 if else 条件的另一种方式。

于 2021-04-15T04:32:45.557 回答