〜(代字号)在c ++中的scanf函数之前意味着什么? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

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

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

我发现波浪号可以用于析构函数或二元否定,但它看起来不像两者。并且代码在没有代字号的情况下不起作用。


int main() {
    char arr;

    while (~scanf("%c", &arr)){
        putchar(arr);
    }
}
c++ scanf tilde
1个回答
2
投票

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

这是bitwise NOT operator应用于scanf()的返回值,正如你提到的那样。

并且代码在没有代字号的情况下不起作用。

作为@Mukul Gupta explained in their comment

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

© www.soinside.com 2019 - 2024. All rights reserved.