0%

C语言 逻辑运算符

C语言的逻辑运算符

​ 对于逻辑运算符而言,含义比较清楚,就是用来逻辑测试的,比较特殊难懂的三元运算符,英文叫做logical ternary,也成为条件运算符,可以定义一些宏来完成简单且强大的功能,这个需要在进阶篇里面看到详细的含义,简单的理解就是:a?b:c,如果a为真就返回b,如果a为假就返回c。

​ 几个逻辑运算符的含义如下:

逻辑运算符 含义
&& 逻辑与
|| 逻辑或
! 逻辑非
?= 条件运算符

逻辑运算符的返回非真即假,也就是不是返回0就是返回1了,示例如下:

举个例子源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*beginner/operator/operator3.c*/
#include <stdio.h>

int main()
{
int a = 5; //0x101
int b = 3; //0x011

printf("%d && %d : %d\n", a, b, (a && b));
printf("%d || %d : %d\n", a, b, (a || b));
printf("!%d : %d\n", a, !a);
printf("%d and %d: %d is bigger\n",a,b,(a>b?a:b));

return 0;
}

相应地Makefile如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#beginner/operator/Makefile

ALL : operator1 operator2 operator3

operator1: operator1.c
gcc -o operator1 operator1.c

operator2: operator2.c
gcc -o operator2 operator2.c

operator3: operator3.c
gcc -o operator3 operator3.c

.PHONY : clean

clean:
rm -f operator1 operator2 operator3

我们可以看到,这一次的Makefile我们多了一个.PHONY行,这是一个伪目标,主要作用是防止Makefile定义的可执行命令的目标跟工作目录里面的文件重名而出现无法运行的问题,在这也提高了执行时的效率,建议每个Makefile都要包含。

输入make,然后./operator3输出为:

1
2
3
4
5 && 3 : 1
5 || 3 : 1
!5 : 0
5 and 3: 5 is bigger

结果看到5 > 3的结果为1,也就是真。其余类推

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道