0

我正在使用 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!");
    }
4

2 回答 2

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 语句将始终被评估。

如果运算符喜欢,您需要重写上面的内容

else if( ( 1 < Number_Of_People ) && ( Number_Of_People <= 6 ) ){
于 2021-04-13T18:38:28.383 回答
0

这个:

if(1<Number_Of_People<=6)

不做你认为它做的事 - 考虑一下:

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

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

于 2021-04-13T18:21:44.063 回答