c - 如何在每行代码之后检查其主体内的 While 循环“条件”?
问题描述
这是我的代码示例,我可以放置 if 条件来检查 While 条件标志,并在正文的每一行之后放置 break,但这会增加开销。我应该怎么办??????
while(!((kvp < (Motor_pos+2)) && (kvp > (Motor_pos-2))) ){
if ( (kvp > (Motor_pos+2))){
// Relay_75 = LOW;
while (kvp > (Motor_pos+2)) {
VAR_CW = HIGH; // M1 - Red LED
VAR_CCW = LOW; // M2 - Orange LED
for(uint8_t i=0; i < 5 ; i++){
ADC_s = ADC_s + Read_VAR();
}
Motor_pos = ADC_sum/5;
ADC_sum =0;
// UART_Write( Motor_pos);
__delay_ms(50);
}
break;
}
else if ((kvp < (Motor_pos-2))){
// Relay_100 = LOW;
while (kvp < (Motor_pos-2)) {
VAR_CW = LOW; // M1 - Red LED
VAR_CCW = HIGH; // M2 - Orange LED
for(uint8_t i=0; i < 5 ; i++){
ADC_s = ADC_s + Read_VAR();
}
Motor_pos = ADC_s/5;
ADC_s =0;
// UART_Write( Motor_pos);
__delay_ms(50);
}
break;
}
else break;
}
Motor_pos = 0;
ADC_s = 0;
VAR_CW = LOW; // M1 - Red LED
VAR_CCW = LOW; // M2 - Orange LED
解决方案
你的逻辑有几个问题,你的代码的意图是什么并不明显。这是您的逻辑细节的减少:
while (a || b) {
if (a) {
while (a) {
do something a;
}
break;
} else if (b) {
while (b) {
do something b;
}
break;
} else {
break;
}
}
演变为:
if (a) {
while (a) {
do something a;
}
} else if (b) {
while (b) {
do something b;
}
}
所以你真的需要首先专注于你的简化步骤,然后是另一个。
推荐阅读
- python - 从 jupyter 查询雪花
- scala - 在 build.sbt 中,父项目中的依赖项未反映在子模块中
- java - Android Studio - 尽管其中没有任何零值,但计算结果为 0
- c# - 为什么我无法正确调用此 API,将对象传递到请求正文?
- jsf - Jsf - primefaces 中rich:toggleControl 的替代方案
- sql - 在一个查询中使用左连接从多个表中删除
- typescript - 使用 Vue.js + TypeScript 在 Onsen 中调用 `this.$ons.notification.alert(...)` 时编译后出错
- android - 如何将 Firebase 数据提取到变量中
- python-3.x - 在本地(Python)测试 Alexa Skills 的最佳方法是什么?
- javascript - 调用 google firebase api 时出现以下错误。如何解决这个问题