0

这是我的代码:

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

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

4

3 回答 3

4

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

这样做:

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

它将首先读取用户输入,如果它是一个数字并且它不是 42 它将打印。循环将一直持续到用户输入无效输入(例如字母)或数字 42。

于 2013-11-07T13:28:27.013 回答
2

scanf不会返回您认为返回的内容,请查一下

于 2013-11-07T13:28:01.277 回答
2

阅读scanf文档:不返回值,它在x变量内部

于 2013-11-07T13:28:06.500 回答