我尝试使用“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;
}
}
答案 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;
}
}
请注意,在循环的条件表达式中声明变量并不是最佳选择。