Loops 嵌套在while循环C中的if语句

Loops 嵌套在while循环C中的if语句,loops,if-statement,while-loop,Loops,If Statement,While Loop,所以我有下面的代码,不知道为什么它不会被执行 int main() { char select; printf("Select q to quit\n"); while ((select = getchar()) != 'q') { if(select == 'a') { printf("You have not selected q\n"); printf("Select q to quit\n"); } return 0; } 因此,当为字符

所以我有下面的代码,不知道为什么它不会被执行

int main() {
char select;
printf("Select q to quit\n");
while ((select = getchar()) != 'q') {
    if(select == 'a') {
        printf("You have not selected q\n");
        printf("Select q to quit\n");
    }
return 0;
}

因此,当为字符select选择say'a时,它不会进入if语句。为什么会这样???

对我来说,这段代码在OSX上运行。但问题是,如果按a键,它也会退出。因此,只需移动返回0

int main() {
char select;
printf("Select q to quit\n");
while ((select = getchar()) != 'q') {
    if(select == 'a') {
        printf("You have not selected q\n");
        printf("Select q to quit\n");
    }
}
return 0;

问候语:

您是否尝试打印select以确保它是一个?是的,由于某种原因,它会两次通过循环…我得到它打印一个int main{char select;printfSelect q to quit:;while select=getchar!='q'{ifselect!='q'{printfy您没有选择q\n;printfSelect q to quit:;}返回0;}这是已更新的…您能告诉我,如果select不等于q,它为什么要打印if语句两次吗?我想它也会得到字符串终止符\0快速而肮脏的解决方法:忽略字符串终止符。