如果 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');
我们的教授给了我们这个代码。它根据数组中第一个索引的值为 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');