C++ c+中scanf函数之前的~(tilde)是什么意思+;?
我找到了一个代码,它接受输入字符串并将其打印出来 但我不知道在scanf面前瓷砖是什么意思 我发现tilde既可以用于析构函数,也可以用于二进制求反,但它看起来并不是两者都可以。没有tilde,代码就不能工作C++ c+中scanf函数之前的~(tilde)是什么意思+;?,c++,scanf,tilde,C++,Scanf,Tilde,我找到了一个代码,它接受输入字符串并将其打印出来 但我不知道在scanf面前瓷砖是什么意思 我发现tilde既可以用于析构函数,也可以用于二进制求反,但它看起来并不是两者都可以。没有tilde,代码就不能工作 int main() { char arr; while (~scanf("%c", &arr)){ putchar(arr); } } 我发现tilde既可以用于析构函数,也可以用于二进制求反,但它看起来并不是两者都可以 它应用于sc
int main() {
char arr;
while (~scanf("%c", &arr)){
putchar(arr);
}
}
我发现tilde既可以用于析构函数,也可以用于二进制求反,但它看起来并不是两者都可以
它应用于scanf()
的返回值,正如您在后面提到的
没有tilde,代码就不能工作
int main() {
char arr;
while (~scanf("%c", &arr)){
putchar(arr);
}
}
作为:
scanf
返回它成功扫描的值数或EOF
如果它到达文件的末尾EOF
是一个表示
负值。在大多数平台上,EOF
的值为(int)-1
。
在这种情况下,取1的-1的补码将使值为0
用于从循环中断开
我发现tilde既可以用于析构函数,也可以用于二进制求反,但它看起来并不是两者都可以
它应用于scanf()
的返回值,正如您在后面提到的
没有tilde,代码就不能工作
int main() {
char arr;
while (~scanf("%c", &arr)){
putchar(arr);
}
}
作为:
scanf
返回它成功扫描的值数或EOF
如果它到达文件的末尾EOF
是一个表示
负值。在大多数平台上,EOF
的值为(int)-1
。
在这种情况下,取1的-1的补码将使值为0
用于从循环中断开
scanf
??你确定要用这个吗?它是c语言的基础。你可以用std::cin>
来代替。写这篇文章的人要么太聪明了,要么试图写模糊的代码。不管怎样,最好把它扔掉。一次读取一个字符有更好的方法。这是按位NOT运算符。更正式地说,它返回返回值scanf
的1的补码scanf
返回它成功扫描的值的数目,或者EOF
返回它到达文件末尾的值的数目EOF
是一个表示负值的宏。在大多数平台上,EOF
的值为(int)-1
。在这种情况下,取1的-1
,将使值变为0
,用于断开循环。(本想将此作为答案发布,但被标记为“重复”对我来说太早了,无法键入)scanf(“%c”,&arr)==1
会更容易阅读。考虑到I/O是这段代码的实际瓶颈,“优化”在某种程度上是徒劳的(即使它能工作(我有点怀疑失败的scanf()
可能返回0或EOF,我不确定它何时返回前者或后者)。scanf
??你确定要用这个吗?它是c语言的基础。你可以用std::cin>
来代替。写这篇文章的人要么太聪明了,要么试图写模糊的代码。不管怎样,最好把它扔掉。一次读取一个字符有更好的方法。这是按位NOT运算符。更正式地说,它返回返回值scanf
的1的补码scanf
返回它成功扫描的值的数目,或者EOF
返回它到达文件末尾的值的数目EOF
是一个表示负值的宏。在大多数平台上,EOF
的值为(int)-1
。在这种情况下,取1的-1
,将使值变为0
,用于断开循环。(本想将此作为答案发布,但被标记为“重复”对我来说太早了,无法键入)scanf(“%c”,&arr)==1
会更容易阅读。考虑到I/O是这段代码的实际瓶颈,“优化”在某种程度上是徒劳的(即使它能工作(我有点怀疑失败的scanf()
可能返回0或EOF,我不确定它什么时候执行前者或后者))。