如何用'?'更改if语句登录C.

时间:2015-06-26 04:56:33

标签: c

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);
}}

我有这个功能,我不明白标志'?' 。 如何更改这些陈述'正常'..其他字使其逻辑相同?

3 个答案:

答案 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;
}