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

时间:2015-08-26 18:37:11

标签: c++ getch

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

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

int main()
{
    while (char ch = getch() != 'q')
    {
        std::cout << ch;
    }
}

我正在使用code :: blocks 13.12和GNU GCC Compiler

顺便说一下..这也行不通了

int main()
{
    char ch;
    while (ch = getch() != 'q')
    {
        std::cout << ch;
    }
}

2 个答案:

答案 0 :(得分:5)

你正在与operator precedence发生冲突。好像你写过:

while (ch = (getch() != 'q'))

在输入1之前,q将是0,此时它将为while ((ch = getch()) != 'q')

你的意思是说:

ch

并且,正如 Filipe Gonçalves提到的那样,int应该被声明为char,而不是getch()int会返回measure())< / p>

答案 1 :(得分:2)

试试这个,你的操作顺序错了。将赋值移到右边或添加括号。

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

int main()
{
    char ch;
    while ((ch = getch()) != 'q')
    {
        std::cout << ch;
    }
}

请注意,在循环的条件表达式中声明变量并不是最佳选择。