什么"!<number> 在 C/C++ 中表示



c中的!<number>是什么意思。例如!-2!3

cout << !-2;
Output:
0
cout << !3;
Output:
0

!是逻辑否定运算符。来自 C 标准(6.5.3.3 一元算术运算符(

5 逻辑否定运算符 ! 的结果为 0,如果值为 其操作数比较不等于 0,如果其操作数的值为 1 比较等于 0。结果的类型为 int。表达 !E 是 等效于 (0==E(。

并且来自C++标准(8.3.1 一元运算符(

9 逻辑否定运算符的操作数! 是上下文 转换为布尔值(第 7 条(;如果转换后的 操作数为假,否则为假。结果的类型为布尔值。

所以,例如,这个表达式

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;

但更紧凑。

它被称为"逻辑不"。如果操作数不为零,则表达式的计算结果为 false,如果操作数为零,则表达式的计算结果为 true。将逻辑不应用于负零也会返回 true。

一元运算符!是逻辑否定(即 NOT(运算符。当操作数为真时,结果为假,当操作数为假时,结果为真。整数操作数隐式转换为布尔值。零为假,所有其他数字为真。

相关内容

  • 没有找到相关文章

最新更新