这是什么? C ++中的运算符吗?

时间:2015-07-24 16:49:45

标签: c++ conditional-statements

考虑这个功能

template<class T> inline bool cx(T &a, T b) {return a < b ? a = b, 1 : 0;}

任何人都可以解释这究竟是做什么的吗?它似乎与典型的condition ? true : false格式不同。

6 个答案:

答案 0 :(得分:9)

我们可以这样说得更清楚:

return a < b ? (a = b, 1) : 0;

带括号的位表示“将b分配给a,然后使用1作为我们的值”。

C和C ++中的

Comma-separated lists of values通常意味着“评估所有这些,但使用最后一个作为表达式的值”。

答案 1 :(得分:4)

这种组合有点棘手,因为它将comma operator与条件表达式结合起来。它解析如下:

  • 0是条件,
  • 1是“when true”表达式
  • b是“when false”表达式

逗号运算符的结果是它的最后一个组件,即a。首先使用逗号运算符的目的是导致副作用class Produkt: def __init__(self, produkt, pris, vikt): self.produkt = produkt self.pris = pris self.vikt = vikt 分配给<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow> <Button android:layout_marginRight="2dp" android:text="1" /> <Button android:layout_marginRight="4dp" android:text="1" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@android:color/darker_gray" /> <Button android:layout_marginLeft="4dp" android:layout_weight="1" android:text="Good" /> </TableRow> <TableRow> <Button android:layout_marginRight="4dp" android:layout_span="2" android:text="Reset" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@android:color/darker_gray" /> <Button android:layout_marginLeft="4dp" android:layout_weight="1" android:text="Submit" /> </TableRow> </TableLayout>

答案 2 :(得分:3)

INSERT OR REPLACE INTO table (sensor_name,timestamp) VALUES ("TNL27",1309540994) WHERE sensor_name=TNL27 OR WHERE sensor_name=1309540994 运算符只是从左到右计算所有表达式,并计算最右边表达式的值。

您的代码与......相同。

{{1}}

答案 3 :(得分:3)

您可以使用,

执行多个表达式

在这种情况下,如果&lt; b,然后将b分配给a并返回1.根据C ++语法:

conditional-expression:  
    logical-or-expression
|   logical-or-expression ? expression : assignment-expression

,其中

expression:  
    assignment-expression
|   expression , assignment-expression

assignment-expression:   
    conditional-expression
|   logical-or-expression assignment-operator initializer-clause
|   throw-expression

答案 4 :(得分:1)

将其读作:

current features

答案 5 :(得分:0)

a < b ? a = b, 1 : 0被解析为(a < b) ? (a = b, 1) : 0,一个普通的条件运算符。当a < b为真时,a = b, 1会通过将b分配给a然后“返回”来评估cx(a,b)a的净效果就是分配a较大的值MasterPage,如果.aspx更改则返回1,否则返回0.