gpt4 book ai didi

c++ - 使用 bool 运算符进行 scanf

转载 作者:行者123 更新时间:2023-11-30 02:42:50 31 4
gpt4 key购买 nike

今天看到这段代码:

while(scanf("%d %d",&x,&y),x||y)
{
....

据我了解,如果某些值(x 或 y)为真,它会进入循环。

scanf docs说:

On success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.

我已将代码重写为:

while(scanf("%d %d",&x,&y) >= 1)
{
....

但是在 online programming challenge site 上第一个有效,第二个失败。

我的假设是否正确?这两段代码有什么区别?

(我标记为 C++,因为我已经在 C++ 4.8.2 - GNU C++ 编译器中测试过)

最佳答案

scanf 返回它匹配的参数数量,但第一个代码片段抛出该结果并只检查 xy 为真。第二个片段返回您至少匹配了一个整数,无论​​值是多少。

考虑输入 "0 0"。在第一种情况下,scanf() 返回 2,但 x || y 返回 false。在第二种情况下,您的条件是 true

关于c++ - 使用 bool 运算符进行 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26691172/

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