我有这个表达式,我知道这是一个if语句......但它转化为什么? flag = flag?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++;
}
谢谢!
答案 0 :(得分:1)
这是一个三元表达式
var = var?表达式1:表达式2
表示如果var是真实的,则将expression1分配给var,否则将expression2分配给var。基本上这个。
if (var)
var = expression1
else
var = expression2
所以在上面的代码中,当定时器== 12500时,标志将被重置并关闭LED0。
答案 1 :(得分:1)
(flag = flag?0:1)表示if(flag)则flag = 0否则flag = 1.更确切地说,如果flag的值为0,则flag将变为1,否则为非零值标志将变为0.在你的代码中使用的是,一旦定时器达到12500,标志将变为1,LED将打开,此后它将保持为ON。
答案 2 :(得分:0)
flag = flag?0:1; 表示如果flag为0则为零,如果flag> 0,则flag为1。