C语言运算符

1.关系运算符:

概念:比较两个数据大小的运算符称为关系运算符( Relational Operators) 。

在 C 语言中有以下关系运算符:
1) <( 小于)
2) <=( 小于或等于)
3) >( 大于)
4) >=( 大于或等于)
5) ==( 等于)
6) !=( 不等于)

关系运算符都是双目运算符, 其结合性均为左结合。 关系运算符的优先级低于算术运算符, 高于赋值运算符。 在六个关
系运算符中, <、 <=、 >、 >=的优先级相同, 高于==和!=, ==和!=的优先级相同。

在 C 语言中, 有的运算符有两个操作数, 例如 10+20, 10 和 20 都是操作数, + 是运算符。 我们将这样的运算符称为
双目运算符。 同理, 将有一个操作数的运算符称为单目运算符, 将有三个操作数的运算符称为三目运算符
常见的双目运算符有 +、 -、 *、 / 等, 单目运算符有 ++、 -- 等, 三目运算符只有一个, 就是 ? :, 我们将在《C 语言
条件运算符》 中详细介绍。 

关系运算符的两边可以是变量、 数据或表达式, 例如:
1) a+b>c+d
2) y>1/2
3) 'b'+1<d
4) -i-2*j==m+1 

关系运算符也可以嵌套使用, 例如:
1) a>(b>c)
2) a!=(c==d)

关系运算符的运算结果只有 0 或 1。 当条件成立时结果为 1, 条件不成立时结果为 0。 例如: 

1>0条件成立,值为1;

22-10>12条件不成立,值为0; 

(a=1)>(b=2)因为1>2不成立,其值为0;

我们将运算结果 1 称为“真” , 表示条件成立, 将 0 称为“假” , 表示条件不成立。 

 举例:

#include<stdio.h>
int main() {
	char c = 'k';
	int i = 1, j = 2, k = 3;
	float x = 3e+4, y = 0.85;
	int output1 = 'a' + 5 < c,output2 = x - 5.25 <= x + y;
	printf("%d, %d\n",output1, -i - 2 * j >= k + 1);
	printf("%d, %d\n", 1 < j < 5,output2);
	printf("%d, %d\n", i + j + k == -2 * j, k == j == i + 5);//
	return 0;

运行结果如下: 1, 0
                          1, 1
                          0, 0

对于含多个关系运算符的表达式, 如 k==j==i+5,根据运算符的左结合性,先计算 k==j,该式不成立,其值为 0,再计算 0==i+5,也不成立,故表达式值为 0。

2.逻辑运算符:

概念:计算机中的逻辑运算又被称作为“布尔运算”,分别为:逻辑运算、逻辑运算,逻辑运算,“逻辑异或运算。此外在门电路中还有:同或运算、与非运算、或非运算。共七种。

在 C 语言中, 也有类似的逻辑运算:
 

运算符 说明 结合性 举例
&& 与运算, 双目, 对应数学中的“且” 左结合 1&&0、 (9>3)&&(b>a)
|| 或运算, 双目 左结合 1||0、 (9>3)||(b>a)
! 非运算, 单目 右结合 !a、 !(2<5)

逻辑运算的结果:

在C语言中, 我们一般将零值称为“假”, 将非零值称为“真”。 逻辑运算的结果也只有“真” 和“假”,“真” 对应的值为1,“假” 对应的值为 0。

1) 与运算(&&) 

1&&0

1为真, 0 为假, 相与的结果为假, 也就是 0。 

(5>0) && (4>2)

5>0 的结果是 1, 为真, 4>2 结果是 1, 也为真, 所以相与的结果为真, 也就是 1。

2) 或运算(||)

10 || 0

10 为真, 0 为假, 相或的结果为真, 也就是 1。

(4>0) || (5>8)

4>0 的结果是 1, 为真, 5>8 的结果是 0, 为假, 所以相或的结果为真, 也就是 1。

3) 非运算(!)

!0

0 为假, 非运算的结果为真, 也就是 1。

!(5>0)

5>0 的结果是 1, 为真, 非运算的结果为假, 也就是 0。

举例:

#include <stdio.h>
int main() {
	int a = 0, b = 10, c = -6;
	int result_1 = a && b, result_2 = c || 0;
	printf("%d, %d\n", result_1, !c);
	printf("%d, %d\n", 9 && 0, result_2);
	printf("%d, %d\n", b || 100, 0 && 0);
	return 0;
}

运行结果如下:0,0

                         0,1

                         1,0

优先级:

逻辑运算符和其它运算符优先级从低到高依次为:
赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)
&& 和 || 低于关系运算符, ! 高于算术运算符。
按照运算符的优先顺序可以得出:
a>b && c>d 等价于 (a>b)&&(c>d)
!b==c||d<a 等价于 ((!b)==c)||(d<a)
a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)
另外, 逻辑表达式也可以嵌套使用, 例如 a>b && b || 9>c , a || c>d && !p 。

相关推荐

  1. C 语言运算符详解

    2024-01-28 01:00:01       59 阅读
  2. C语言运算符

    2024-01-28 01:00:01       56 阅读
  3. c语言 关于逻辑运算符

    2024-01-28 01:00:01       61 阅读
  4. C语言中逻辑运算符

    2024-01-28 01:00:01       63 阅读
  5. C语言初学4:运算符

    2024-01-28 01:00:01       64 阅读
  6. c语言之逻辑运算符

    2024-01-28 01:00:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 01:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 01:00:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 01:00:01       82 阅读
  4. Python语言-面向对象

    2024-01-28 01:00:01       91 阅读

热门阅读

  1. 二维数组中的查找

    2024-01-28 01:00:01       58 阅读
  2. 找出字符串中第一个匹配项的下标

    2024-01-28 01:00:01       59 阅读
  3. Ubuntu(22.04):安装VNC

    2024-01-28 01:00:01       62 阅读
  4. python-学习笔记:异常处理

    2024-01-28 01:00:01       52 阅读
  5. LEETCODE605.种花问题

    2024-01-28 01:00:01       54 阅读
  6. 【第三十节】流程控制do-while的使用

    2024-01-28 01:00:01       57 阅读
  7. 01-在PATH中查找程序

    2024-01-28 01:00:01       53 阅读
  8. 【微信小程序】canvas绘实现贴纸效果

    2024-01-28 01:00:01       52 阅读
  9. 从centos镜像上创建具备SSH链接的Dockerfile

    2024-01-28 01:00:01       54 阅读
  10. 大语言模型推理优化策略

    2024-01-28 01:00:01       56 阅读