为了账号安全,请及时绑定邮箱和手机立即绑定

为什么换成while(scanf("%d%d",&n,&m)!=EOF)就对了?

为什么换成while(scanf("%d%d",&n,&m)!=EOF)就对了?

qq_遁去的一_1 2022-05-26 15:11:49
它们不是一样的么??为什么在hdu上用while(~scanf("%d%d",&n,&m))的结果是0_0_10758670_8400.c0_0_10758670_8400.c(23) : fatal error C1075: 与左侧的 大括号“{”(位于“0_0_10758670_8400.c(3)”)匹配之前遇到文件结束但是换成while(scanf("%d%d",&n,&m)!=EOF)就对了?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

如:
  scanf("%d,%d", &a, &b);
  如果a和b都被成功读入,那么scanf的返回值就是2
  如果只有a被成功读入,返回值为1
  如果a和b都未被成功读入,返回值为0
  如果遇到错误或遇到end of file,返回值为EOF。
你上边的两个都是看返回值来判断的 至于while(~scanf("%d",&n)) 没用过
t>>=1 即t = t >> 1 右移一位 再赋值 应该是

查看完整回答
反对 回复 2022-05-30
?
手掌心

TA贡献1942条经验 获得超3个赞

按照
scanf("%d,%d", &a, &b); 的定义来讲,也应该是相等。
只有 返回值为EOF 的时候 ~EOF 才能为0 其余 都不会。

查看完整回答
反对 回复 2022-05-30
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

~是位运算符,不是关系运算符,原数据类型是什么得到就是什么类型,不是bool类型,不可以作为条件判断。

查看完整回答
反对 回复 2022-05-30
  • 3 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信