C++ “你说什么?”&书信电报;数量>;在C/C++;方法

C++ “你说什么?”&书信电报;数量>;在C/C++;方法,c++,c,operators,logical-operators,C++,C,Operators,Logical Operators,什么是在c中表示。例如-2或!3 cout << !-2; Output: 0 cout << !3; Output: 0 cout它被称为“逻辑非”。如果操作数为非零,则表达式的计算结果为false;如果操作数为零,则表达式的计算结果为true。将逻辑not应用于负零也会返回true。一元运算符是逻辑协商(即NOT)运算符。当操作数为真时,结果为假;当操作数为假时,结果为真。整数操作数隐式转换为布尔值。零为假,所有其他数字为真。是逻辑求反运算符。来自C标准(6.

什么是
在c中表示。例如
-2
!3

cout << !-2;

Output:
0

cout << !3;

Output:
0

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

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

是逻辑求反运算符。来自C标准(6.5.3.3一元算术运算符)

5逻辑求反运算符的结果!如果 其操作数比较不等于0,如果其操作数的值 比较值等于0。结果的类型为int。表达式为!E是 相当于(0==E)

<>和从C++标准(83.1元运算符)

9逻辑求反运算符的操作数!这是语境 转换为bool(第7条);如果已转换 操作数为false,否则为false。结果的类型是bool

例如,这个表达式

cout << !-2;
在C语言中,您可以包含标题
,并使用宏
not
作为操作员
的替代记录

还有一个把戏。例如,如果您希望从C函数返回一个整数表达式,将其精确转换为1或0,您可以编写例如

return !!expression;
也就是说,如果
表达式
不等于
0
,则第一次应用运算符
将表达式转换为
0
,第二个将应用运算符
将结果表达式转换为
1

就好像要写一样

return expression == 0 ? 0 : 1;

但是更简洁。

请记住,零值是
false
,而所有其他值都是
true
(尽管您无法进行相等性测试)。对于该语言的每个基本概念,我们都会有一个问题吗?例如,c中的
-
是什么意思。@WeatherVane“虽然你不能进行平等测试”,为什么不呢?您指的是底层位模式吗?平等与对等?还是别的?@LightnessRaceswithMonica我的意思是
3==true
false
,尽管逻辑表达式中的
3
true
。做了一个小的编辑以澄清这是逻辑否定。很好地从标准中快速提取文本!
return !!expression;
return expression == 0 ? 0 : 1;