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

它们不是一样的么??
为什么在hdu上用
while(~scanf("%d%d",&n,&m))
的结果是
0_0_10758670_8400.c
0_0_10758670_8400.c(23) : fatal error C1075: 与左侧的 大括号“{”(位于“0_0_10758670_8400.c(3)”)匹配之前遇到文件结束
但是换成while(scanf("%d%d",&n,&m)!=EOF)就对了?

qq_遁去的一_1
浏览 236回答 3
3回答

肥皂起泡泡

如:  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 右移一位 再赋值 应该是

手掌心

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

杨__羊羊

~是位运算符,不是关系运算符,原数据类型是什么得到就是什么类型,不是bool类型,不可以作为条件判断。
打开App,查看更多内容
随时随地看视频慕课网APP