我编写了一个非常简单的代码,以确保它在我将其实现到我的更大项目之前正常工作.向用户显示三个选项的列表,用户应选择一个,在此代码中显示他/她的选项.
#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;
}
Run Code Online (Sandbox Code Playgroud)
但是,输出将始终打印:ONE,无论我在键盘上点击什么,调试器显示它到达第一个allowed = 1,然后跳到do while循环结束.
谁能告诉我为什么?
小智 6
在c中进行比较时,必须使用双等运算符(==).因此,当您比较if(c ='1')时,您将c赋值为'1',这将返回true.更改
if (c = '1')
Run Code Online (Sandbox Code Playgroud)
至
if (c == '1')
Run Code Online (Sandbox Code Playgroud)