我们的教授给了我们这段代码。它根据数组中第一个索引的值为char []赋值。他说这是一个if声明,但我从未见过这样的人。我是c ++的新手
temp.byte[0] = byte[0] == '0' ? '1' : '0';
答案 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');