在 c++ 中 scanf 函数之前 ~(波浪号)是什么意思

What does ~(tilde) means before scanf function in c++?

本文关键字:意思 是什么 c++ scanf 函数      更新时间:2023-10-16

我找到了一个代码,它接受输入字符串并打印出来。

但我不知道扫描前面的波浪号是什么意思。

我发现波浪号可以用于析构函数或二进制否定,但它看起来不像两者。没有波浪号,代码就不起作用。


int main() {
    char arr;
    while (~scanf("%c", &arr)){
        putchar(arr);
    }
}

我发现波浪号可以用于析构函数或二进制否定,但它看起来不像两者。

它是应用于scanf()返回值的按位 NOT 运算符,正如您在后面提到的。

没有波浪号,代码就不起作用。

正如@Mukul古普塔在他们的评论中解释的那样:

scanf返回它成功扫描或EOF的值数 如果它到达文件末尾。 EOF是一个宏,表示 负值。在大多数平台上,EOF的价值是 (int) -1 . 在这种情况下,取 -1 的补码,将使值为 0 并用于从循环中断。