|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int bsp_GetLineWalking_Data(void)
{
int iL1, iL2, iR1, iR2, returnValue;
iL1 = GPIO_ReadInputDataBit(LineWalk_L1_PORT, LineWalk_L1_PIN);
iL2 = GPIO_ReadInputDataBit(LineWalk_L2_PORT, LineWalk_L2_PIN);
iR1 = GPIO_ReadInputDataBit(LineWalk_R1_PORT, LineWalk_R1_PIN);
iR2 = GPIO_ReadInputDataBit(LineWalk_R2_PORT, LineWalk_R2_PIN);
returnValue = (iL1 == 1?0:1000);
returnValue += (iL2 == 1?0:100);
returnValue += (iR1 == 1?0:10);
returnValue += (iR2 == 1?0:1);
return returnValue;
}
问一下这一段代码是什么意思,什么逻辑,什么目的
returnValue = (iL1 == 1?0:1000);
returnValue += (iL2 == 1?0:100);
returnValue += (iR1 == 1?0:10);
returnValue += (iR2 == 1?0:1);
本帖最后由 jackz007 于 2024-1-24 18:49 编辑
这一句的逻辑是
- returnValue = (iL1 == 1?0:1000) ;
复制代码
表达式 (iL1 == 1?0:1000) 的值取决于 iL1 == 1 是否为真,如果为真,那么,表达式的值为 0,否则,为 1000。
如果用 if 语句表达就是:
- if(iL1 == 1) returnValue = 0 ;
- else returnValue = 1000 ;
复制代码
这些含有三目运算符的语句:
- returnValue = (iL1 == 1?0:1000);
- returnValue += (iL2 == 1?0:100);
- returnValue += (iR1 == 1?0:10);
- returnValue += (iR2 == 1?0:1);
复制代码
可以改写为以下语句:
- returnValue = 0 ;
- if(iL1 != 1) returnValue = 1000 ;
- if(iL2 != 1) returnValue += 100 ;
- if(iR1 != 1) returnValue += 10 ;
- if(iR2 != 1) returnValue += 1 ;
复制代码
代码功能是完全一样的。
|
|