这是我的代码:

signed int x;
while (!(scanf("%d", &x) == 42)) {
std::cout << x << std::endl; }
return 0;


它应打印用户输入的任何数字,但42除外。如果用户输入42,则应忽略该数字或退出它,但它不起作用。我究竟做错了什么?

最佳答案

当您应该测试读取scanf的值时,您正在测试x函数的返回。

这样做:

signed int x;
while (scanf("%d", &x) > 0 && x != 42) {
    std::cout << x << std::endl;
}
return 0;


它将首先读取用户输入,如果输入的是数字而不是42,则将进行打印。循环将一直持续到用户输入无效的输入(例如字母)或数字42为止。

关于c++ - while循环不起作用C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19837173/

10-12 23:59