getch()inside while while循环总是返回1

Sha*_*ido 0 c++ getch

在我从循环中的表达式中使用getch()函数捕获它之后,我正在尝试使用"ch"变量.我根本不能使用它,因为它总是返回相同的char代码(1作为int).我知道我可以简单地使用while(1)并从那里开始工作getch(),但它被认为是不好的做法,我想知道为什么它不会以这种方式工作.

#include <iostream>
#include <conio.h>

int main()
{
    while (char ch = getch() != 'q')
    {
        std::cout << ch;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在GNU GCC编译器中使用code :: blocks 13.12

顺便说一句..这也行不通

int main()
{
    char ch;
    while (ch = getch() != 'q')
    {
        std::cout << ch;
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*oub 5

你正在违反运营商优先权.就像你写的那样:

while (ch = (getch() != 'q'))
Run Code Online (Sandbox Code Playgroud)

这将是1直到q输入a ,此时它将是0.

你的意思是说:

while ((ch = getch()) != 'q')
Run Code Online (Sandbox Code Playgroud)

并且,正如FilipeGonçalves所提到的,ch应该被声明为int,而不是char(getch()返回int)