0

if ステートメントであることがわかっているこの式があります...しかし、それは何に変換されますか? フラグ = フラグ?0:1; そうですか : if (flag==flag) flag=0 else flag =1 この場合、フラグはタイマーが 12500 に達すると一度 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

それは三項式です

var = var ? 式1 : 式2

var が true の場合、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 はコードでの使用は、タイマーが 12500 に達するとすぐにフラグが 1 になり、LED がオンになり、それ以降オンのままになることです。

于 2013-01-21T12:04:15.150 に答える
0

フラグ = フラグ?0:1; flag が 0 の場合は 0、flag >0 の場合は flag が 1 になることを意味します。

于 2013-01-19T21:52:32.703 に答える