void get_out_last_10(thisWay_t *thisWay) {
int i;
for (i = (thisWay->gens - 9 < 1 ? 1 : thisWay->gens - 9); i <= thisWay->gens; i++) {
printOut(&thisWay->states[i], thisWay->height, thisWay->width);
}}
我有这个功能,我不明白标志'?' 。 如何更改这些陈述'正常'..其他字使其逻辑相同?
答案 0 :(得分:3)
运算符?:用法如下:
condition ? value_if_true : value_if_false
将条件作为布尔表达式求值为true或false。在评估布尔条件的基础上,如果condition为true,则整个表达式返回value_if_true,否则返回value_if_false。通常,两个子表达式value_if_true和value_if_false必须具有相同的类型,这决定了整个表达式的类型。这种类型检查的重要性在于运营商最常用的条件赋值语句。在此用法中,它在赋值语句的右侧显示为表达式,如下所示:
variable = condition ? value_if_true : value_if_false .
这意味着如果之前的条件?在执行冒号之前的操作是真的,否则执行后的操作,然后将获得的值分配给i.So如果你要在if else语句中写入它将是:
if(thisWay->gens-9 < 1)
{
i=1;
}
else
{
i=thisWay->gens - 9;
}
答案 1 :(得分:1)
i = (thisWay->gens - 9 < 1 ? 1 : thisWay->gens - 9);
如果你想将它转换为if if,它将是这样的
if(thisWay->gens - 9 < 1){
i = 1;
}
else{
i = thisWay->gens - 9;
}
在本声明中
i = (thisWay->gens - 9 < 1 ? 1 : thisWay->gens - 9);
如果条件thisWay->gens - 9 < 1
为真,则返回1
否则它将返回thisWay->gens - 9
并且该返回值将分配给变量i
。
答案 2 :(得分:0)
问号(?)和冒号(:)用于条件运算符。它适用于您的情况。
if(thisWay->gens - 9 < 1)
{
i=1;
}
else
{
i=thisWay->gens - 9;
}