反问题(C程序)

反问题(C程序),c,C,我只想在报警状态时将计数浮点数重置回0。未设置位.b3且泄漏检测=0时。然而,由于某种原因,它似乎从未重置。当警报响起时,我将leakDetected设置为1,这样计数器就无法重置。但如果报警持续2秒并再次被禁用,它将保持此计数为2。它应该重置为0 { int count_float int fixedCount = 50; short leakDetected=0; BS(TRISB,7); // Bund sw port=input.

我只想在报警状态时将计数浮点数重置回0。未设置位.b3泄漏检测=0时。然而,由于某种原因,它似乎从未重置。当警报响起时,我将leakDetected设置为1,这样计数器就无法重置。但如果报警持续2秒并再次被禁用,它将保持此计数为2。它应该重置为0

{   
    int count_float     
    int fixedCount = 50;
    short  leakDetected=0;
    BS(TRISB,7);    // Bund sw port=input.
    DelayMs(2); // will rise is bund SW open
    if(RB7){                                
        if(Control.bits.BUND_ENABLE){       // if bund alarm enabled
            if(Alarm_Status.bits.b3){   // if  already set
                count_float +=10;       //count increased by 10
                if(count_float == fixedCount) { 
                    leakDetected=1;
                    DU_Reason.bits.EmergencyDialIn=1;// alarm!
                }
            }
            if((!Alarm_Status.bits.b3)&&(!leakDetected)){
                count_float=0;
            }                           
        }   
    } else {
        Alarm_Status.bits.b3=1;     // Bund Sw Closed
        BC(TRISB,7);
    }
}

您正在使用未初始化的
count\u float
。在不初始化变量的情况下访问变量会导致未定义的行为

要修复它,只需初始化为:

int count_float = 0;

关于更新后的问题,每次进入此循环时,您都会初始化
count\u float
。如果您希望它保持以前的计数(因为它每秒循环一次),请将其设置为静态,如下所示

static int count_float = 0;  /* '= 0' is optional but recommended */

您正在使用未初始化的
count\u float
。在不初始化变量的情况下访问变量会导致未定义的行为

要修复它,只需初始化为:

int count_float = 0;

关于更新后的问题,每次进入此循环时,您都会初始化
count\u float
。如果您希望它保持以前的计数(因为它每秒循环一次),请将其设置为静态,如下所示

static int count_float = 0;  /* '= 0' is optional but recommended */

您正在使用未初始化的
count\u float
。在不初始化变量的情况下访问变量会导致未定义的行为

要修复它,只需初始化为:

int count_float = 0;

关于更新后的问题,每次进入此循环时,您都会初始化
count\u float
。如果您希望它保持以前的计数(因为它每秒循环一次),请将其设置为静态,如下所示

static int count_float = 0;  /* '= 0' is optional but recommended */

您正在使用未初始化的
count\u float
。在不初始化变量的情况下访问变量会导致未定义的行为

要修复它,只需初始化为:

int count_float = 0;

关于更新后的问题,每次进入此循环时,您都会初始化
count\u float
。如果您希望它保持以前的计数(因为它每秒循环一次),请将其设置为静态,如下所示

static int count_float = 0;  /* '= 0' is optional but recommended */

正如你问题的本质一样,答案是你需要一个
int count\u float
之后。很抱歉,由于某些原因,它没有复制过来。泄漏检测设置为零的位置?这就是您正在使用的代码吗?没有遗漏吗?我在know中输入了完整的代码。正如你问题的本质一样,答案是你需要一个
int count\u float
之后。很抱歉,由于某些原因,它没有复制过来。泄漏检测设置为零的位置?这就是您正在使用的代码吗?没有遗漏吗?我在know中输入了完整的代码。正如你问题的本质一样,答案是你需要一个
int count\u float
之后。很抱歉,由于某些原因,它没有复制过来。泄漏检测设置为零的位置?这就是您正在使用的代码吗?没有遗漏吗?我在know中输入了完整的代码。正如你问题的本质一样,答案是你需要一个
int count\u float
之后。很抱歉,由于某些原因,它没有复制过来。泄漏检测设置为零的位置?这就是您正在使用的代码吗?没有遗漏什么?我把完整的代码放在“知道”里了。