2013-04-15 94 views
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; 

} 

然而,出来放总是会打印:一,不管我按下键盘上与调试器显示,它得到首批获准= 1,则跳到do while循环结束。

有人能告诉我为什么吗?

+1

为了避免overlokking你正在做我倾向于把固定在comparsion操作左侧的错误;那就是('1 = c')在你的情况下。尝试一下! ;-) – alk

回答

6

在c中进行比较时,必须使用双等号运算符(==)。所以,当你比较if(c ='1')时,你给c赋值'1',并且这返回true。更改

if (c = '1') 

if (c == '1') 
+0

谢谢!我没有意识到的东西,它修复了它。 –

4

您需要更改

if (c = '1') 

if (c == '1') 

这是因为c = '1'分配c'1'并返回'1'其计算结果为真从而触发if