5.1 逻辑表达式
5.1.1 关系运算符
关系运算符的优先级统统小于算术运算符。
note
- 运算:
i<j<k
中,其表达的意思是(i<j)<k
#include <stdio.h>
int main()
{
int i=1,j=2,k=3;
// (i<j)<k
// i<j-> true,也就是 1
// 1<k
if(i<j<k)
{
printf("yes\n");
}
// i>j-> false,也就是 0
// 0<k
if(i>j<k)
{
printf("yes\n");
}
return 0;
}
// 输出,最终的结果是一样的
yes
yes
5.1.3 逻辑运算符
对于逻辑运算符 &&
和 ||
,都具有“短路现象”。即,在运算时先运算左侧的表达式,如下方的--i
。如果左表达式的结果可以判定&&
,||
的最终结果,那么将不进行右表达式的运算。
#include <stdio.h>
int main()
{
int i=1,j=2,k=3;
// 因为由 --i 可得整个运算结果为 0,所以不进行 j++ 的运算
if((--i&&j++)==0)
{
printf("%d",j);
}
return 0;
}
// 输出
2
5.2 if 语句
5.2.7 布尔值
在 c 语言中,没有直接对布尔值的关键字设置,但我们可以通过一些间接的方式来设置
// 宏定义方式一
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int main()
{
int i=1;
if(i == TRUE)
{
printf("true");
}
if(i == FALSE)
{
printf("false");
}
}
// 输出
true
// 宏定义进行类型定义
#include <stdio.h>
#define BOOL int
int main()
{
BOOL i = 1;
if(i==1)
{
printf("%d",i);
}
if(i==0)
{
printf("%d",i);
}
}
// 输出
1