如果 assignment/statement 在 C++ 中意味着什么

What does this if assignment/statement mean in C++

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

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

这行代码相当于:

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

这是c++的基础知识。以 www.learncpp.com

为例

Ternary operators 对很多语言都是通用的。它大致等同于 if returns 第一个或第二个值。第一个值在 true 情况下使用,第二个值在 false 情况下使用。记住这一点的一种方法是 condition? 是一种问题,之后的第一件事就是答案。

有一些使用指南:

  • 当等价的 if 会更简单时,不要使用三元。
  • 不要嵌套它们。
  • 除非您将结果分配给某物,否则不要使用三元。
  • 尽量避免在函数参数中使用它们。
  • 不要使用否定条件,而是翻转最后两部分的顺序。

这就是所谓的三元运算符,它们有点奇怪。它们是 if 语句的 shorthand。

格式为:

condition ? if-true : if-false

在这种情况下,条件是is byte[0] == '0'。如果为真,temp.byte[0] 设置为 '1',否则 temp.byte[0] 设置为 '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'

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

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