Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 程序忽略if-else语句_C_If Statement - Fatal编程技术网

C 程序忽略if-else语句

C 程序忽略if-else语句,c,if-statement,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(

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

#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;

}
#包括
#包括
int main()
{
字符c;
允许整数;
printf(“选择任何:\n 1.1\n 2.2\n 3.3\n”);
c=getch();
做{
//getch();
如果(c='1'){
printf(“一”);
允许=1;
}else如果(c='2'){
printf(“两个”);
允许=1;
}else如果(c='3'){
printf(“三方”);
允许=1;
}否则{
printf(“选择无效,请再次执行:”);
允许=0;
}
}while(允许=0);
返回0;
}
但是,输出将始终打印:1,无论我在键盘上点击什么,调试器显示它到达第一个允许的=1,然后跳到do while循环的末尾

有人能告诉我为什么吗?

你需要换衣服

if (c = '1')
if (c = '1')


这是因为
c='1'
c
赋值给
'1'
并返回
'1'
,其计算结果为true,从而触发
if

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


为了避免你所犯的错误,我倾向于把常数放在比较运算的左边;在您的情况下就是(
1=c
)。试试看!;-)谢谢一些我没有意识到的事情,它解决了它。
if (c = '1')
if (c == '1')