while循环不工作C ++

时间:2013-11-07 13:25:57

标签: c++ while-loop scanf

这是我的代码:

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

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

3 个答案:

答案 0 :(得分:4)

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

这样做:

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

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

答案 1 :(得分:2)

scanf不会返回您认为返回的内容look it up

答案 2 :(得分:2)

阅读scanf文档:未返回值,它位于x变量