[C语言] 逻辑运算符

一、前言

  逻辑运算符在计算机编程中起着重要作用, 它可以和条件判断语句以及循环结构一起使用, 控制程序的逻辑, 构建强大的逻辑系统.
  在数字电路中, 有三个基本逻辑门, 即 或, 与, 非. 在C语言中,也很类似, 主要的逻辑运算符有 ||, &&, !, ^, 分别表示 或, 与, 非, 异或. 下面将详细介绍这四个逻辑运算符.

二、有关逻辑门的介绍

2.1 逻辑或(or)运算符(||)

  逻辑或运算符在C语言中用||表示.
   运算法则: 有A, B两个操作数, 当A和B中有一个为真时,A || B结果为真, 反之为假.
  也就是0和1做加法运算.
  下面附上或运算符||的真值表:

AB结果

  下面看一个例子:
  例2.1:

# include <stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = 2;
	
	if (a || b) // 当a || b为真时 (0 || 1为真, 执行该语句块)
	{
		printf("a || b为真\n");
	}
	if (b || c) // 当b || c为真时 (1 || 2为真, 执行该语句块)
	{
		printf("b || c为真\n");
	}
	return 0;
}

  运行结果:
例2.1结果

2.2 逻辑与(and)运算符(&&)

  逻辑与运算符在C语言中用&&表示.
   运算法则: 有A, B两个操作数, 当A和B中两个都为真时,A && B结果为真, 反之为假.
  也就是0和1做乘法运算.
  下面附上与运算符&&的真值表:

AB结果

  下面看一个例子:
  例2.2:

# include <stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = 2;
	
	if (a && b) // 当a && b为真时 (0 && 1为假, 不执行该语句块)
	{
		printf("a && b为真\n");
	}
	if (a && c) // 当a && c为真时 (0 && 2为假, 不执行该语句块)
	{
		printf("a && c为真\n");
	}
	if (b && c) // 当b && c为真时 (1 && 2为真, 执行该语句块)
	{
		printf("b && c为真\n");
	}
	return 0;
}

  运行结果:
例2.2结果

2.3 逻辑非(not)运算符(!)

  逻辑非运算符在C语言中用!表示.
   运算法则: 有操作数A, 当A为真时,!A结果为假, 当A为假时, !A为真.
  也就是0或1做取反运算.
  下面附上非运算符!的真值表:

A结果

  下面看一个例子:
  例2.3:

# include <stdio.h>
int main()
{
	int a = 0;
	
	if (!a) // 当!a为真时 (!0 = 1, 为真, 执行该语句块)
	{
		printf("!a为真\n");
	}
	if (a) // 当a为真时 (a = 0, 为假, 不执行该语句块)
	{
		printf("a为真\n");
	}
	return 0;
}

  运行结果:
例2.3结果

2.4 逻辑异或(xor)运算符(^)

  逻辑异或运算符在C语言中用^表示.
   运算法则: 有A, B两个操作数, 当A和B相异时,A ^ B结果为真, 反之为假.
  也就是 ( a + b ) ∗ ( ( a ∗ b ‾ ) ) (a+b)*((\overline{a*b})) (a+b)((ab)).
  下面附上异或运算符^的真值表:

AB结果

  下面看一个例子:
  例2.4:

# include <stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = 2;
	
	if (a ^ b) // 当a和b相异时 (0与1不同,  a ^ b为真, 执行该语句块)
	{
		printf("a和b相异\n");
	}
	if (b ^ c) // 当b和c相异时 (1和2不同, 因此b ^ c为真, 执行该语句块)
	{
		printf("b和c相异\n");
	}
	if (b ^ (c - b)) // 当b和(c-b)相异时 (1和2-1相同, 因此b ^ (c - b)为假, 不执行该语句块)
	{
		printf("b与(c - b)相异\n");
	}
	return 0;
}

  运行结果:
例2.4结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w147288

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值