如果赋值/语句在C ++中意味着什么呢?

时间:2015-02-05 21:05:11

标签: c++ if-statement conditional-statements variable-assignment

我们的教授给了我们这段代码。它根据数组中第一个索引的值为char []赋值。他说这是一个if声明,但我从未见过这样的人。我是c ++的新手

temp.byte[0] = byte[0] == '0' ? '1' : '0';

5 个答案:

答案 0 :(得分:4)

Ternary operators对很多语言都很常见。它大致相当于返回第一个或第二个值的if。第一个值用于 true 情况,第二个值用于 false 。一种记住这种情况的方法是condition?是一个问题,之后的第一件事是答案。

使用它们有一些指导原则:

  • 当等效if更简单时,不要使用三元组。
  • 不要嵌套它们。
  • 除非您将结果分配给某些内容,否则请勿使用三元组。
  • 尽量避免在函数参数中使用它们。
  • 不要使用负面条件,而是翻转最后两个部分的顺序。

答案 1 :(得分:2)

这被称为三元运算符,它们有点奇怪。它们是if语句的简写。

格式为:

condition ? if-true : if-false

在这种情况下,条件为is byte[0] == '0'。如果为true,则temp.byte[0]设置为'1',否则temp.byte[0]设置为'0'

答案 2 :(得分:0)

这行代码相当于:

if byte[0] == '0'
  temp.byte[0] = '1'
else
  temp.byte[0] = '0';

这是c ++中的基本内容。请查看www.learncpp.com上的示例

答案 3 :(得分:0)

temp.byte[0] = byte[0] == '0' ? '1' : '0';

也可以解释为

temp.byte[0] = (byte[0] == '0' ? '1' : '0'); //L-value is `temp.byte[0]`

换句话说,

byte[0] == '0'

如果是,则temp.byte[0] = '1'

其他,temp.byte[0] = '0'

答案 4 :(得分:0)

使用完全带括号的表达式可以使三元运算符的含义更加清晰:

temp.byte[0] = ((byte[0] == '0') ? '1' : '0');