程序忽略if​​ else语句

时间:2013-04-15 17:51:17

标签: c if-statement

我编写了一个非常简单的代码,以确保它在我将其实现到我的更大项目之前正常工作。 向用户显示三个选项列表,用户应选择一个,在此代码中显示他/她的选项。

#include <stdio.h>
#include <conio.h>

int main()
{
    char c;
    int allowed;
    printf("Pick any:\n 1. one \n 2.two \n 3.three \n");

    c = getch();

    do{
      //getch();
      if (c = '1'){
        printf("ONE");
        allowed = 1;
      } else if (c = '2'){
        printf("TWO");
        allowed = 1;
      } else if (c = '3'){
        printf("THREEEEEE");
        allowed = 1;
      }else{
        printf("Choice was invalid, do it again:");
        allowed = 0;
      }
    }while (allowed = 0);

    return 0;

}

然而,输出将始终打印:ONE,无论我在键盘上点击什么,调试器显示它到达第一个allowed = 1,然后跳到do while循环结束。

有人可以告诉我为什么吗?

2 个答案:

答案 0 :(得分:6)

在c中进行比较时,必须使用双等运算符(==)。因此,当您比较if(c ='1')时,您将c赋值为'1',这将返回true。变化

if (c = '1')

if (c == '1')

答案 1 :(得分:4)

您需要更改

if (c = '1')

if (c == '1')

这是因为c = '1'c分配给'1'并返回'1',其评估为true,从而触发if