1.C语言之逻辑运算
与(&&)、或(||)、非(!)
1.1 逻辑与运算表达式
操作数1 | && | 操作数2 |
注释:1.所有非零值1为真;
2.若操作1为真,则继续计算操作数2,若操作数2为真,则表达式的值为真,否则为假。
3.若操作1为假,则不计算操作数2,表达式的值为假。
应用:
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main()
{
int a=10,b=20,c=30;
bool ret=true;
ret=a<b&&b<c;
printf("\nret=%d c=%d",ret,c);
ret=++c&&b<c;
printf("\nret=%d, c=%d",ret,c);
c=30;
ret=a>b&&c++;
printf("\nret=%d c=%d",ret,c);
return 0;
}
1.2 逻辑或运算
操作数1 | || | 操作数2 |
注释:1.所有非零值1为真;
2.若操作1为真,则不计算操作数2,则表达式的值为真。
3.若操作1为假,则继续计算操作数2,若操作数二为真,则表达式的值为真,否则为假。
应用:
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main()
{
int a=10,b=20,c=30;
bool ret=true;
ret=a>b||b<c;
printf("\nret=%d c=%d",ret,c);
ret=a<b||b<c;
printf("\nret=%d c=%d",ret,c);
c=30;
ret=a<b||c++;
printf("\nret=%d c=%d",ret,c);
return 0;
}
1.3 非运算
! | 操作数 |
注释:1.所有非零值1为真。
2.操作数为真,则表达式的值为假,否则为假。
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
int main()
{
int a=10,b=20,c=30;
bool ret=true;
ret=!(a>b);
printf("\nret=%d c=%d",ret,c);
ret=a<b||!b<c;
printf("\nret=%d c=%d",ret,c);
c=!30;
ret=a<!b||!c++;
printf("\nret=%d c=%d",ret,c);
return 0;
}
解释:c=!c=0。||或运算中,只要一个操作数为真,则表达式为真(1)。
2.例题
2.1判断某一年是否为闰年(条件为1.能被4整除,但不能被100整除;能被400整除)
#include<stdio.h>
#include<stdbool.h>
int main()
{
int a=0;
bool year=true;
scanf("%d",&a);
year=((a%4==0)&&(a%100!=0))||(a%400==0);
printf("a=%d\nyear=%d",a,year);
return 0;
}
注释:scanf从键盘输入年份,判断是否为闰年。