! c中的含义是什么。例如!-2还是!3?
cout << !-2;
Output: 0
cout << !3;
Output: 0
5
!是逻辑否定运算符。根据C标准(6.5.3.3一元算术运算符)
5逻辑求反运算符的结果!如果其操作数的值比较不等于0,则为0;如果其操作数的值比较等于0,则为1。结果的类型为int。表达式!E等效于(0 == E)。
并且来自C ++标准(8.3.1一元运算符)
9逻辑否定运算符的操作数!在上下文中转换为bool(第7条);如果转换后的操作数为false,则其值为true;否则为false。结果的类型是布尔。
因此,例如,此表达式
cout << !-2;
根据C引号等效于
cout << ( 0 == -2 );
在C语言中,运算符的结果具有类型,int而在C ++语言中,运算符的结果具有类型bool。
请注意,在C ++中,您可以使用替代令牌not。例如,上面的语句可以像
cout << not -2;
在C语言中,您可以包含标题<iso646.h>,并将宏not用作操作员的替代记录!。
还有一个窍门。例如,如果您希望从C函数返回一个整数表达式,以将其完全转换为1或0,则可以编写例如
return !!expression;
也就是说,如果expression不等于,0则第一次应用运算符!会将表达式转换为0,第二次应用运算符!会将结果表达式转换为1。
就像写一样
return expression == 0 ? 0 : 1;
但更紧凑。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。