C 逻辑运算符
逻辑运算符执行 logical-AND (&&
) 和 logical-OR (||
) 运算。
语法
logical-AND-expression
:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression
:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
备注
逻辑运算符不执行常用算术转换。 相反,它们根据其等效性为 0 计算每个操作数。 逻辑运算的结果不是 0 就是 1。 结果的类型为 int
。
C 逻辑运算符如下所述:
运算符 | 描述 |
---|---|
&& |
如果两个操作数具有非零值,则逻辑“与”运算符产生值 1。 如果其中一个操作数等于 0,则结果为 0。 如果逻辑“与”运算的第一个操作数等于 0,则不会计算第二个操作数。 |
|| |
逻辑“或”运算符对其操作数执行“与或”运算。 如果两个操作数的值均为 0,则结果为 0。 如果其中一个操作数具有非零值,则结果为 1。 如果逻辑“或”运算的第一个操作数具有非零值,则不会计算第二个操作数。 |
逻辑“与”和逻辑“或”表达式的操作数从左到右进行计算。 如果第一个操作数的值足以确定运算的结果,则不会计算第二个操作数。 此效应称为“短路”计算。 在表达式的第一个操作数之后有一个序列点。 有关详细信息,请参阅序列点。
示例
下面的示例演示了逻辑运算符:
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
在此示例中,如果 x
小于 y
,且 y
小于 z
,则调用 printf
函数以输出消息。 如果 x
大于 y
,则不会计算第二个操作数 (y < z
) 且不会输出任何内容。 这是在编写逻辑比较时必须考虑的另一种短路计算情况。 否则,如果代码依赖于计算第二个操作数的意外结果,则它可能会导致问题。
printf( "%d" , (x == w || x == y || x == z) );
在此示例中,如果 x
与 w
、y
或 z
相等,则 printf
函数的第二个参数的计算结果将为 true,并输出值 1。 否则,它的计算结果将为 false,并打印值 0。 只要其中一个条件的计算结果为 true,计算便会停止。
请参阅
反馈
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:提交和查看相关反馈