Raj*_*ain -8 c c++ operators logical-operators
!<number>c中的含义是什么。例如!-2还是!3?
cout << !-2;
Output:
0
cout << !3;
Output:
0
Run Code Online (Sandbox Code Playgroud)
!是逻辑否定运算符。根据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;
Run Code Online (Sandbox Code Playgroud)
根据C引号等效于
cout << ( 0 == -2 );
Run Code Online (Sandbox Code Playgroud)
在C语言中,运算符的结果具有类型,int而在C ++语言中,运算符的结果具有类型bool。
请注意,在C ++中,您可以使用替代令牌not。例如,上面的语句可以像
cout << not -2;
Run Code Online (Sandbox Code Playgroud)
在C语言中,您可以包含标题<iso646.h>,并将宏not用作操作员的替代记录!。
还有一个技巧。例如,如果您想从C函数返回一个整数表达式,以将其完全转换为1或0,则可以编写例如
return !!expression;
Run Code Online (Sandbox Code Playgroud)
也就是说,如果expression不等于,0则第一次应用运算符!会将表达式转换为0,第二次应用运算符!会将结果表达式转换为1。
就像写一样
return expression == 0 ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
但更紧凑。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |