带有char的条件在C中不起作用

时间:2013-10-02 16:39:15

标签: c if-statement char scanf

我有一个奇怪的问题。尝试使用if语句和do-while循环来验证我的条件,如果char变量不等于'c'和'f',但是当我选择'c'或'C'或'f'或'F'仍然显示“错误的选择”跟随不起作用的部分。当我输入“c”时,我跟踪打印变量(正如您可以看到printf()代码所示)我可以看到程序接受“c”但仍显示为错误输入。 我已经致电#include<stdio.h>#include<ctype.h>了。 有人可以帮帮我吗?

char choice;

do
{
    printf("\nChoose between Celsius (c) or for Fahrenheit (f):");
    scanf(" %c*%c", &choice);

    //printf("\nchoice1: %c", choice);

    choice = tolower(choice);

    //printf("\nchoice2: %c", choice);

    if(choice != 'c' || choice != 'f')
        printf("\nWrong choice!!");

}while(choice!='c' || choice!='f');

3 个答案:

答案 0 :(得分:3)

无论选择是什么,它都不等于c或不等于f。如果它等于c,则它不等于f。如果它等于f,则它不等于c。所以你的两个条件都是真的。

您想要choice != 'c' && choice != 'f'

答案 1 :(得分:3)

if(choice != 'c' || choice != 'f')
对于所有choice

都会生效,它应该是

if(choice != 'c' && choice != 'f')

答案 2 :(得分:0)

校正:

if(choice != 'c' && choice != 'f')
      printf("\nWrong choice!!");