运算符 | 功能说明 | 举例 |
---|---|---|
! | 逻辑反 | !(x==0) |
&& | 逻辑与 | x > 0 && x < 10 |
|| | 逻辑或 | y < 10 || x > 10 |
-
运算规则:
-
逻辑反:将逻辑真、假翻转,即真变假,假变真
-
逻辑与:将两个关系表达式串联起来,当且仅当左右两个表达式都为真时,结果为真。
-
逻辑或:将两个关系表达式并联起来,当且仅当左右两个表达式都为假时,结果为假。
-
-
特殊规则
-
在逻辑与运算中,如果左边表达式的值为假,那么右边表达式将不被执行。
-
逻辑与 && ---而且,同时 两个操作数都必须为真,结果为真
逻辑或 || ---或者 只要有一个为真,那么结果为真
逻辑非 ! ----反
非0 为真,0 为假
逻辑表达式结果有两种 1为真 0为假在逻辑或运算中,如果左边表达式的值为真,那么右边表达式将不被执行。
-
//demo1
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
//c语言 惰性运算,也就是说 如果前面的结果为假,后面就不会运行--知难而退
if(a > b && ++a)
{
printf("111\n");//10
}
printf("%d\n",a);
}
//demo2:
#include <stdio.h>
#include <stdbool.h>
int main(int argc, char const *argv[])
{
int a = 10, b = 5, c = 6, d = 7;
// 10大于5并且6小于7为真,结果为1
printf("%d\n",a > b && c < d);//1
// 10小于5或者6小于7为真,结果为1
printf("%d\n",a < b || c < d);//1
// -1为真取反为假,结果为0
printf("%d\n",!-1);//0
// c语言为惰性语言,只要表达式1能确定整条语句结果,则表达式2不执行
printf("%d,%d\n",a < b && a++,a);//0,10
return 0;
}
练习:如果用户输入ASCII码值,则输出对应的大小写字母,如果输入ASCll码值输出不是大小写字母则输出错误。
#include <stdio.h>
//如果用户输入ASCII码值,则输出对应的大小写字母。
int main()
{
int ch = 0;
printf("Please enter ASCII code value:");
scanf("%d",&ch);
if((ch >= 65 && ch <= 90)||(ch >=97 && ch <= 122))//判断ASCII码值范围
{
printf("ch = %c",ch);
}else{
printf("Not uppercase or lowercase letters");
}
return 0;
}