关键词:&&
、||
、!
1. 初探逻辑运算符
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int k = 0;
++i || ++j && ++k;
printf("i = %d\n", i);
printf("j = %d\n", j);
printf("k = %d\n", k);
return 0;
}
输出结果:
i = 1
j = 0
k = 0
2. 逻辑运算符分析——程序中的短路
-
||
从左向右开始计算:
当遇到为真的条件时停止计算,整个表达式为真
所有条件为假时表达式才为假 -
&&
从左向右开始计算:
当遇到为假的条件时停止计算,整个表达式为假
所有条件为真时表达式才为真 -
逻辑表达式中,
&&
比||
具有更高的优先级
在&&
和||
混合运算时,整个表达式被看作||
表达式(因为||
的优先级低于&&
,因此最后运算||
),编译器从左向右开始计算&&
表达式,当某个&&
表达式的值为真时,停止计算,整个表达式值为真。
#include <stdio.h>
int g = 0;
int f()
{
printf("In f()...\n");
return g++;
}
int main()
{
if( g || f() && f() )
{
printf("In if statement: %d\n", g);
}
printf("In main(): %d\n", g);
return 0;
}
输出结果:
In f()...
In main(): 1
3. !
逻辑非分析
C语言中的逻辑非!
只认识0,只知道见了0就返回1.因此当其遇见的值不是0时,其结果为0.
4. 逻辑非运算符的使用
#include <stdio.h>
int main()
{
printf("%d\n", !0);
printf("%d\n", !1);
printf("%d\n", !100);
printf("%d\n", !-1000);
return 0;
}
输出结果:
1
0
0
0
5. 小结
- 程序中的逻辑表达式遵循短路规则
- 在
&&
与||
混合运算时:
整个表达式被看作||
表达式
从左向右先计算&&
表达式
最后计算||
表达式 - 逻辑非
!
运算符只认得0:遇见0返回1,否则统统返回0
声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!
网友评论