gpt4 book ai didi

c++ - 为什么有不同的输入值?

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:18 27 4
gpt4 key购买 nike

为什么输入'q'(或任何字符)

double x;

x = cin.get();

cout << x << endl;

返回输入字符的字符值,但是

    double x;

cin >> x;

cout << x << endl;

返回 'q' 的随机值

最佳答案

就像你说的,std::istream::get从输入流中获取一个字符。例如,如果您输入数字 1 作为输入,它会返回字符 '1' 的 ASCII 代码,即 49 十进制(在使用 ASCII 的系统,这几乎是一切)。

当您使用输入运算符 >>> 时,该函数会读取输入并将其解析 为正确的格式。因此,如果您将 >>>double 变量一起使用,并输入 1,您将在变量。

您遇到的问题是,当输入运算符 >>> 无法正确解析输入时,例如当您输入字母而不是数字时,输入运算符将失败并且 设置变量,这意味着你打印一个未初始化的变量,它是未定义的行为。请注意,此行为在 C++11 中发生了变化(参见例如 this old answer of mine)。

您必须记住,流对象可以用作条件,并且输入运算符函数返回有问题的流。所以你可以做例如

if (std::cin >> x)
std::cout << x << '\n';
else
std::cout << "Error in input\n";

关于c++ - 为什么有不同的输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251030/

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