【发布时间】:2020-04-01 09:29:39
【问题描述】:
我是C++ 的新手。我对C 有一些了解,我知道不应该假设C 规则与C++ 相同。我只是在寻找一些相同的解决方案。
例如在C中我们使用时:
int a;
if (scanf ("%d", &a) != 1);
检查是否输入了有效值。例如,如果不是整数,而是一个字符作为输入,这将告诉我们scanf 未能将整数作为输入。
但是在C++ 中,当我向程序输入m 时,我调试了这段代码:
int a;
cin >> a;
并将0 分配给a,但我对scanf 做了同样的事情,a 的值是-858993460。(而a 在两种语言中的默认值是-858993460)
所以这是我的问题,我如何知道cin 是否未能接受有效输入?通常,0 在C++ 代码中分配给a?如果这很正常,我怎么知道输入的数据真的是0 还是失败的结果?有没有办法检查cin 是否成功?
PS:对不起,如果这个问题很愚蠢。我是c++ 的新手。
【问题讨论】:
-
“我知道不应该将 C 规则与 C++ 进行比较”为什么不呢?你只是不应该假设它们是相同的
-
See this question。
cin返回一个值,指示输入操作是成功还是失败。 -
两个 'a 都没有初始化为任何东西,它们只是具有内存中该位置的随机值。