c语言 - 如何在每行代码后检查其体内的 While 循环"condition"?



这是我的代码的一个例子,我可以放置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;
}
}

所以你真的需要先专注于你的简化步骤,然后才是其他的。

最新更新