gpt4 book ai didi

c++ - 使用 scanf 过滤掉负数

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:49 25 4
gpt4 key购买 nike

我的目标是扫描一些只有正数的a,如果输入负数,函数应该打印错误:

if ( scanf("%u %lf", &a, &b) != 2 ) {
//error
}

现在的理论是 scanf 返回成功的写入尝试,所以如果我输入负数,scanf 不应该返回 2。我的理论似乎不正确,为什么?

显然我可以简单地 scanf %d 然后检查 %d 是否为负但现在我很好奇为什么我的初始理论是不正确的。那么有没有不用扫描再对比的方法呢?

最佳答案

您的理论不成立,因为 scanf 不会失败或不会拒绝将用户输入复制到指定的内存地址,即使在预期输入无符号数字时输入有符号数字也是如此。因此,根据 scanf文档,scanf 将返回复制到提供的内存地址的项目数。

关于c++ - 使用 scanf 过滤掉负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155427/

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