C - while(东西|| something)

Sta*_*tan 1 c

我有一个关于while循环的快速问题.

我想读取ASCII字符代码,如果它不是某些特定的ascii代码,我不想继续并要求用户再次输入它.

这有效

    while (yn != 89)
    {
        printf("\nEnter");
        flushall();
        scanf("\n%c", &yn);
    }
Run Code Online (Sandbox Code Playgroud)

事实并非如此

    while (yn != 89 || yn != 121)
    {
        printf("\nEnter");
        flushall();
        scanf("\n%c", &yn);
    }
Run Code Online (Sandbox Code Playgroud)

天哪,我想我需要睡个好觉.这相当......愚蠢.:)谢谢你们BTW.

AnT*_*AnT 8

表达yn != 89 || yn != 12总是正确的.任何值都不等于89或不等于12.所以,这个表达没有任何实际意义.循环将永远循环,因为重复条件始终为真.

根据您的描述,您需要的条件是yn != 89 && yn != 12.&&不是||.