逻辑运算符的优先级:
- ! 优先于 双目运算符 优先于 关系运算符 优先于 && 优先于 ||
- 单目逻辑运算符! 和单目算术运算符 的优先级相同,结合性均是从右至左
- 双目逻辑运算符“&&”和“||”的结合性是从左至右
注意:
- 对于运算结果:1(逻辑真)0(逻辑假)
- 对于运算对象:非0(逻辑真)0(逻辑假)
- 逻辑与“&&”相当于“同时”;逻辑或“||”相当于“或者”;逻辑非“!”相当于“否定”
- 运算对象可以是任何类型的数据
- 一旦“&&”和“||”能够确定表达式的值,则不再继续运算。逻辑与“&&”第一个表达式为“假”,则运算结果为“假”,不再继续运算。逻辑或“||”第一个表达式为“真”,则运算结果为“真”,不再继续运算。
逻辑表达式的构成规则:
单目逻辑运算符 表达式
表达式 双目逻辑运算符 表达式
1,判判断年份是否为闰年的逻辑表达式。
代码如下:
//从键盘输入年份,判断是否为闰年
#include<stdio.h>
int main(void)
{
int year, result;
printf("请输入年份: \n");
scanf("%d",&year); //从键盘输入年份并保存到变量year
result = (year%4==0)&&(year%100!=0)||(year%400==0);
//判断是否为闰年并保存到变量result
if(result==1)
printf("%d 年是闰年\n",year);
else
printf("%d 年不是闰年\n",year);
return 0;
}
结果如下:
2,简单例子
代码如下:
#include<stdio.h>
int main(void)
{
int a=1, b=2, c=3, d=4, m=1,n=1;
printf("(m=a>b)&&(n=c>d)的值为: %d\n",(m=a>b)&&(n=c>d));
//(m=0)&&(n=c>d) --> 0&&(n=c>d) -->0
printf("m 的值为: %d\n",m); //0
printf("n 的值为: %d\n",n); //1
return 0;
}
结果如下: