gpt4 book ai didi

c++ - 关于 cin、字符串和大数 - C++

转载 作者:行者123 更新时间:2023-11-30 04:07:15 25 4
gpt4 key购买 nike

我有这个非常简单的代码。只是一个 if 语句,具有 1、2 和其他所有结果之间的三个结果。期望的行为是在输出适当的响应后,程序将等待用户在关闭前按下回车键。但是如果输入一个字符串,cin 似乎会失败,尽管它不会因为单个字符而失败。这是为什么?

此外,如果我输入一个 30 位数字,程序将按原样输出“nope”,但用户需要按两次回车键才能关闭。怎么会?

另外,我并不是在寻找问题的解决方案,只是想了解为什么会发生这些事情。

#include <iostream>

int main()
{
int choice;

std::cout<< "1 or 2?"<< std::endl;
std::cin>> choice;
if (choice == 1)
{
std::cout<< "boom"<< std::endl;
}
else if (choice ==2)
{
std::cout<< "bam"<< std::endl;
}
else
{
if (std::cin.fail())
{
std::cin.clear();
std::cin.ignore();
std::cout<< "nope"<< std::endl;
}
else if (choice != 1 || 2)
{
std::cout<< "nope"<< std::endl;
}
}
std::cin.ignore();
std::cin.get();
return 0;
}

感谢您抽出时间,如果这个问题过于简单,我深表歉意。我只是不知道如何为谷歌措辞。

最佳答案

else if (choice != 1 || 2)

这行代码没有做你怀疑的事情

你必须实际编写下面的代码

else if (choice != 1 || choice != 2)

由于我们说英语的方式,这很微妙。您的代码会说“否则,如果选择不等于 1 或 2 ...但是两个呢?

我展示的代码说得更准确,“else if choice is not equal to one or choice is not equal to two”现在我们知道在 or 的两边,我们正在比较 1 和 1 的整数值2有选择

注意: 这里的 else if 实际上完全没有用,因为你从原来的 if 和 else if 和 else 中知道选择不是一个或两个。你在 else block 中的事实已经告诉你选择不是一个或两个,所以你真的不需要这里的逻辑冗余。

关于c++ - 关于 cin、字符串和大数 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com