〜(波浪号)在C ++中的scanf函数之前意味着什么?

时间:2019-04-27 10:52:53

标签: c++ scanf tilde

我发现了一个使用输入字符串并打印出来的代码。

但是我不知道波浪号在scanf之前是什么意思。

我发现波浪号既可以用于析构函数,也可以用于二进制求反,但是看起来两者都不一样。如果没有波浪号,代码将无法正常工作。


int main() {
    char arr;

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

1 个答案:

答案 0 :(得分:2)

  

我发现波浪号既可以用于析构函数也可以用于二进制求反,但是看起来两者都不一样。

这是bitwise NOT operator应用于scanf()的返回值,如您稍后所述。

  

如果没有波浪号,代码将无法正常工作。

@Mukul Gupta explained in their comment

  
    

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