(已解决)请教一下,scanf前面的~是什么意思啊?

这是我写的代码

#include <stdio.h>
int main()
{
    int a,b;
    while(scanf("%d %d", &a, &b)) printf("%d", a+b);
    return 0;
}

然后这是做题目正确的答案

#include<stdio.h>
int main()
{
    int a,b;
    while(~scanf("%d%d", &a, &b))printf("%d\n",a+b);
    return 0;
}

它就多了一个这个~,我不知道是什么意思咧,有没有大神能教一下!

最佳答案
  • c语言中,~ 表示按位取反,是位运算符,运算对象是 2 进制。~与其后的数值或变量相结合,执行取反计算,当原操作数的第i位为0时,结果的第i位为1;否则该位值为0。

  • scanf() 函数的返回值,正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b); 如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量)。

1年前 评论
vanshit (楼主) 1年前
Tacks (作者) 1年前
讨论数量: 6
  • c语言中,~ 表示按位取反,是位运算符,运算对象是 2 进制。~与其后的数值或变量相结合,执行取反计算,当原操作数的第i位为0时,结果的第i位为1;否则该位值为0。

  • scanf() 函数的返回值,正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b); 如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量)。

1年前 评论
vanshit (楼主) 1年前
Tacks (作者) 1年前

应该是假设 EOF == -1,然后没读到 EOF

1年前 评论

其实就是做一个无限循环的布尔值,while如果参数为true则继续循环,如果为fasle就结束循环,结合一楼的解释,其实就是正确输入后计算输出完,结束循环

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!