为什么我的elseif陈述从未执行

时间:2020-08-07 06:56:43

标签: c++

有什么主意为什么否则将永远不会执行?程序运行时,差异的值会不断变化。

        double difference = abs(reale_x[0] - reale_x[1]);
        if (0 <= difference < 45) {
            timer_counter += 1;
            if (timer_counter == 30) {
                cout << "CLICK" << '\n';
            }
        }
        else if (difference > 50) {
            timer_counter = 0;
        }

3 个答案:

答案 0 :(得分:3)

在c ++中,比较不是这样。

这段代码

if (0 <= difference < 45) {

是否首先比较0是否小于或等于difference。然后用布尔值true或false“替换”它。然后将bool值(所以1或0)与45进行比较。它将始终小于45。您拥有的始终是真实的语句。

因此,编写if语句的方式是

if (difference >= 0 && difference < 45){

请注意,由于您的else if语句,如果差异> 44和<51

,则该语句将不会执行

答案 1 :(得分:2)

if (0 <= difference < 45)将作为if ((0 <= difference) < 45)执行,将是0<451<45,并且始终是true。这就是else部分没有得到执行的原因。

答案 2 :(得分:0)

在数学中,我们看到并写入0 <= x < 45或类似的东西来定义变量x的范围。但是,为了告诉计算机同一件事,您必须说得更清楚。说,必须告诉编译器,x的值大于或等于零,同时,该值将小于45,您可以通过以下语句告诉编译器:difference >= && difference < 45&&在大多数语言中都是'AND'运算符。

相关问题