0

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

#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,无论我在键盘上敲什么,调试器都会显示它到达第一个允许的 = 1,然后跳到 do while 循环的末尾。

谁能告诉我为什么?

4

2 回答 2

6

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

if (c = '1')

if (c == '1')
于 2013-04-15T17:53:31.397 回答
4

你需要改变

if (c = '1')

if (c == '1')

这是因为c = '1'赋值并返回c其值为 true 从而触发.'1''1'if

于 2013-04-15T17:52:51.083 回答