标题:[新手提问]while(~scanf("%d", &n) && n)怎么理解
只看楼主
hunse
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-2-16
结帖率:100%
已结贴  问题点数:20 回复次数:3 
[新手提问]while(~scanf("%d", &n) && n)怎么理解
已经知道~是按位非运算符 ~EOF的值为0,&&n是什么意思啊?题目要求n=0输入结束
while(~scanf("%d", &n)!=~EOT)为什么不可以。。
搜索更多相关主题的帖子: 提问 while scanf 输入 结束 
2019-02-16 18:28
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
得分:7 
   &&n   //即同时满足n为非0值

我不曾拥有梦想,但我坚信我有未来……
2019-02-16 19:46
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:7 
&& 是逻辑与运算符啊
两边的子表达式非0 求值结果是 1

'0'<=n && n<='9'
应该见过吧

https://zh.
2019-02-17 09:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
要求输入成功,且n不是0才继续。那么正确的代码应该是
while( scanf("%d",&n)==1 && n!=0 )

scanf的用法你自己看书,比如 scanf("%d%d",&a,&b),那么它可能返回 EOF、0、1、2。

在比赛中,争分夺秒,因为竞赛用例不可能有非预期字符,因此使用 scanf("%d",&n)!=EOF 也没问题,而且EOF一般(不是标准)为-1,那么 scanf("%d",&n)!=-1 等价于 ~scanf("%d",&n),这样写可以少打几个字。 (注,非比赛时的正常代码中写成scanf("%d",&n)!=EOF或~scanf("%d",&n)者都是大傻逼)

while( …… && n ) 等价于 while( …… && n==0 ) 不用说吧
2019-02-18 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493093-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved