即使没有错误,其他条件也不起作用

Else condition not working even tho there is no error

我正在使用 if else 条件在 c 中编写程序,它 运行 完全没问题,没有任何错误,但它不是 运行 else 条件(即即使我给它在应该打印 else 条件的地方输入,它给了我 else if 条件而不是 else 条件),这里是代码

if(Number_Of_People==1){
        printf("Show us your identification so we can proceed!");
    }
    else if(1<Number_Of_People<=6){
        printf("Show us the identification of each member so that we can proceed!");
    }
    else 
    {
        printf("Sorry, we dont have rooms for so many people!");
    }

这个:

if(1<Number_Of_People<=6)

并没有按照您的想法行事 - 考虑一下:

else if(Number_Of_People > 1 && Number_Of_People<=6)

请注意,当您在第一种情况下明确检查 1 时,实际查找大于 1 的唯一值是 0 或负值。

if语句中的表达式

 else if(1<Number_Of_People<=6){

可以等效地重写为

 else if( ( 1 < Number_Of_People ) <=6 ){

关系运算符 < 产生 0 或 1,具体取决于带有关系运算符的表达式在逻辑上是假还是真。

因此在任何情况下子表达式 ( 1 < Number_Of_People ) 等于 0 或 1 的结果都小于 6.

因此,如果跳过前面的 if 语句,将始终评估此 if 语句。

你需要重写上面的if operator like

else if( ( 1 < Number_Of_People ) && ( Number_Of_People <= 6 ) ){