0

我有这个表达式,我知道它是一个 if 语句……但它翻译成什么?标志=标志?0:1;是吗: if (flag==flag) flag=0 else flag =1 如果是这种情况,那么当计时器达到 12500 时,flag 将变为 1,但它永远不会再次变为 0。正确的?

int flag = 0; 
while(1)
  {
     if (timer == 12500)
       {
          flag = flag?0:1;
          timer=0;
       }

     if(flag == 1)

      p4_0=0; //turn on LED0

    else

      p4_0=1; //turn off LED0

    timer++;
   }

谢谢!

4

3 回答 3

1

这是一个三元表达式

变量 = 变量?表达式1:表达式2

表示如果 var 为真,则将 expression1 分配给 var,否则将 expression2 分配给 var。基本上这个。

if (var)
    var = expression1
else
    var = expression2

所以在上面的代码中,当计时器 == 12500 时,标志将被重置并关闭 LED0。

于 2013-01-19T21:51:37.060 回答
1

(flag = flag?0:1) 表示 if(flag) then flag=0 否则 flag=1。更准确地说,如果 flag 的值为 0 那么 flag 将变为 1 否则对于所有非零值 flag 将变为 0。它在您的代码中的用途是,一旦计时器达到 12500,标志将变为 1,LED 将打开,此后将保持打开状态。

于 2013-01-21T12:04:15.150 回答
0

标志=标志?0:1;表示如果 flag 为 0 则为零,如果 flag >0 则 flag 变为 1。

于 2013-01-19T21:52:32.703 回答