我在这样的代码中看到的
while(~scanf("%d",&a))
我知道scanf()
有返回值,但是我不明白~
是什么意思
最佳答案
这是一个依赖 EOF
设置所有位的愚蠢技巧。 Since the standard does not guarantee the exact value of EOF , 这个程序的行为是平台相关的。
当 scanf
检测到输入结束时,它返回 EOF
。标准要求 EOF
为负数。 EOF
通常设置为 -1
。当 ~
应用于 -1
时,你会得到一个零,因此循环停止。在 EOF
定义为其他负数的平台上,循环将永远不会停止。代码的行为还取决于带有符号值的 ~
的实现定义行为。
您应该按如下方式重写循环:
while (scanf("%d", &a) != EOF) {
...
}
关于c - “~scanf” 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997531/