提问人:ByteEater 提问时间:3/9/2023 最后编辑:curiousguyByteEater 更新时间:3/9/2023 访问量:77
在 C++ 中没有输入时读取数字
Reading a number when no input given in C++
问:
当提供文件末尾或空行作为输入时,以下代码是否容易出现未定义的行为?
unsigned long long i;
cin >> i;
从我使用 Compiler Explorer 观察到的情况来看,它似乎得到了一些随机值,很可能是碰巧在该内存位置的值。但通常情况下,当编译器以这种方式行事时,标准实际上指定了 UB。i
答: 暂无答案
评论
cin >> i;
可能会以几种不同的方式失败,我相信这取决于它何时失败会发生什么。如果它成功从流中读取,但无法将值转换为 ,则定义为将设置为 的行为。但是,如果故障发生得更早,“没有输入发生”,这将使未初始化。i
unsigned long long
i
0
i
uint64_t
。unsigned long long
uint64_t
unsigned long long
uint_least64_t
uint64_t