这个问题在这里已有答案:
我找到了一个代码,它接受输入字符串并将其打印出来。
但我不知道在scanf前面的波浪号是什么意思。
我发现波浪号可以用于析构函数或二元否定,但它看起来不像两者。并且代码在没有代字号的情况下不起作用。
int main() {
char arr;
while (~scanf("%c", &arr)){
putchar(arr);
}
}
我发现波浪号可以用于析构函数或二元否定,但它看起来不像两者。
这是bitwise NOT operator应用于scanf()
的返回值,正如你提到的那样。
并且代码在没有代字号的情况下不起作用。
作为@Mukul Gupta explained in their comment:
scanf
返回它成功扫描的值的数量,如果它到达文件末尾则返回EOF
。EOF
是一个代表负值的宏。在大多数平台上,EOF
的价值是(int) -1
。在这种情况下,取1的1的补码,将使该值为0并用于从循环中断开。