C ++中的整数和while循环...如何?

问题人

即,我有此代码:

int main {
   cin >> x;
    while (x != 1 && x != 2 && x != 3) {
        cout << "Invalid input, try again!" << endl;
        cin >> x;
    }
    cout << "Hello, World";
}

当整数变量“ x”为1、2或3时,它应返回“ Hello,World”。

但是,当我键入非整数值(即“ Hello”)时,为什么它会循环运行?

cdhowie

根据您定义和初始化的方式x,它可能会在您每次输入非整数时进入循环,或者有时仅会进入循环。

如果您没有为分配任何值x,那么在您输入非整数x之后,的值仍然不确定cin >> x,因为转换失败,因此没有值被写入x因此x实际上可以是任何数字,并且您的程序中有未定义的行为。有时可能会进入循环,有时可能不会。

如果x最初给您分配了类似0的值,那么x如果转换失败,由于其值未更改,其值仍将为0,因此循环条件为true,并且将进入循环。

一种选择是仅在转换成功的情况下循环,您可以这样做:

int main(void) {
    while ((cin >> x) && x != 1 && x != 2 && x != 3) {
        cout << "Invalid input, try again!" << endl;
    }
    cout << "Hello, World";
    return 0;
}

cin >> x将返回cin,如果遇到错误条件(EOF,转换失败等),则在布尔上下文中计算为false。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确使用if else语句和while循环与C中的子进程

来自分类Dev

如何在feof()中增加while循环以在C中读取

来自分类Dev

如何在feof()中增加while循环以在C中读取

来自分类Dev

如何基于C中函数的输入退出退出while循环?

来自分类Dev

在 C 中,一行 While 循环如何工作?

来自分类Dev

在while循环中读取C中的整数后,scanf被跳过

来自分类Dev

Stroustrup C ++书。如何在while循环中跟踪哪个整数输入最大和最小?

来自分类Dev

c - 如何使用scanf()和while循环将stdin中的字符串读取到c编程中的二维数组中?

来自分类Dev

如何在C ++中串联字符串和整数?

来自分类Dev

循环和char数组如何在C中工作?

来自分类Dev

如何遍历C中的整数?

来自分类Dev

如何在整数数组中输入时在C ++中按下“输入”时中断循环

来自分类Dev

如何在整数数组中输入时在C ++中按下“输入”时中断循环

来自分类Dev

如何从C#中的字符串提取负整数和正整数

来自分类Dev

如何从C中混合了字母,标点和整数的字符串中提取整数?

来自分类Dev

如何从C中混合了字母,标点和整数的字符串中提取整数?

来自分类Dev

C中的While循环

来自分类Dev

在 C++ 中,如何使用 for 循环在整数中找到所有连续的合数?

来自分类Dev

如何检查C / C ++中的整数溢出?

来自分类Dev

如何结束C中的循环?

来自分类Dev

此C ++ while循环如何工作?

来自分类Dev

如何使ctrl + c / not /中断while循环?

来自分类Dev

如何在while循环中找到最大值和最小值 - c

来自分类Dev

如何从while循环中反转整数值?

来自分类Dev

为什么while循环在Java和C中工作不同

来自分类Dev

c - 如何在没有`scanf()`的情况下在c中获取整数和浮点输入?

来自分类Dev

如何从C中的字符中减去整数?

来自分类Dev

如何从C中的字符中减去整数?

来自分类Dev

在Python中,如何在while循环内重新启动for循环?最远的out循环是while循环,它在r <y(整数列表的长度)时运行

Related 相关文章

  1. 1

    如何正确使用if else语句和while循环与C中的子进程

  2. 2

    如何在feof()中增加while循环以在C中读取

  3. 3

    如何在feof()中增加while循环以在C中读取

  4. 4

    如何基于C中函数的输入退出退出while循环?

  5. 5

    在 C 中,一行 While 循环如何工作?

  6. 6

    在while循环中读取C中的整数后,scanf被跳过

  7. 7

    Stroustrup C ++书。如何在while循环中跟踪哪个整数输入最大和最小?

  8. 8

    c - 如何使用scanf()和while循环将stdin中的字符串读取到c编程中的二维数组中?

  9. 9

    如何在C ++中串联字符串和整数?

  10. 10

    循环和char数组如何在C中工作?

  11. 11

    如何遍历C中的整数?

  12. 12

    如何在整数数组中输入时在C ++中按下“输入”时中断循环

  13. 13

    如何在整数数组中输入时在C ++中按下“输入”时中断循环

  14. 14

    如何从C#中的字符串提取负整数和正整数

  15. 15

    如何从C中混合了字母,标点和整数的字符串中提取整数?

  16. 16

    如何从C中混合了字母,标点和整数的字符串中提取整数?

  17. 17

    C中的While循环

  18. 18

    在 C++ 中,如何使用 for 循环在整数中找到所有连续的合数?

  19. 19

    如何检查C / C ++中的整数溢出?

  20. 20

    如何结束C中的循环?

  21. 21

    此C ++ while循环如何工作?

  22. 22

    如何使ctrl + c / not /中断while循环?

  23. 23

    如何在while循环中找到最大值和最小值 - c

  24. 24

    如何从while循环中反转整数值?

  25. 25

    为什么while循环在Java和C中工作不同

  26. 26

    c - 如何在没有`scanf()`的情况下在c中获取整数和浮点输入?

  27. 27

    如何从C中的字符中减去整数?

  28. 28

    如何从C中的字符中减去整数?

  29. 29

    在Python中,如何在while循环内重新启动for循环?最远的out循环是while循环,它在r <y(整数列表的长度)时运行

热门标签

归档