如何解决在C语言中,!0总是返回1吗?
此程序奇特地显示! 0
的整数值为1
:
#include <stdio.h>
int main( int argc,char* argv[] ) {
printf( "%d\n",! 0 );
return 0;
}
$ gcc --version && gcc -g ./main.c && ./a.out
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation,Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1
$
这是否得到任何标准的保证,或者! 0
是否可以求值为任何其他非零整数值?
解决方法
保证评估结果为1
。
6.5.3.3一元算术运算符C 2011 Online Draft
...
5如果逻辑求反运算符!
的操作数的值比较,则结果为0 不等于0,如果其操作数的值等于0,则返回1。结果的类型为int
。 表达式!E
等效于(0==E)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。