【C语言操作符分类详解】(纯干货)(上)

简介: 【C语言操作符分类详解】(纯干货)

1 .算术操作符


假设变量 A 的值为 10,变量 B 的值为 20;

+ 把两个操作数相加 A + B 将得到 30
- 从第一个操作数中减去第二个操作数 A - B 将得到 -10
* 把两个操作数相乘 A * B 将得到 200
/ 分子除以分母 B / A 将得到 2
% 取模运算符,整除后的余数 B % A 将得到 0


注:

1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数;

2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法;

3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数;

实例:

#include <stdio.h>intmain()
{
inta=21;
intb=10;
intc ;
c=a+b;
printf("Line 1 - c 的值是 %d\n", c );
c=a-b;
printf("Line 2 - c 的值是 %d\n", c );
c=a*b;
printf("Line 3 - c 的值是 %d\n", c );
c=a/b;
printf("Line 4 - c 的值是 %d\n", c );
c=a%b;
printf("Line 5 - c 的值是 %d\n", c );
c=a++;  // 赋值后再加 1 ,c 为 21,a 为 22printf("Line 6 - c 的值是 %d\n", c );
c=a--;  // 赋值后再减 1 ,c 为 22 ,a 为 21printf("Line 7 - c 的值是 %d\n", c );
return0}

结果如下:

Line1-c的值是31Line2-c的值是11Line3-c的值是210Line4-c的值是2Line5-c的值是1Line6-c的值是21Line7-c的值是22


2 .移位操作符


1)<< 左移操作符

2)>> 右移操作符


注:

移位操作符的操作数只能是整数

1. 左移操作符(<<)

移位规则:

左边抛弃、右边补0

c4ddb1384c2f4576ade3850695be0bf9.png 2.右移操作符

首先右移运算分两种:

1. 逻辑移位

左边用0填充,右边丢弃

5fffd0101996474087a9757173629cbc.png

2. 算术移位

左边用原该值的符号位填充,右边丢弃

e0712d2203f7495bab79c7030a6f0656.png

实例:

#include <stdio.h>intmain()
{
unsignedinta=60;    /* 60 = 0011 1100 */unsignedintb=13;    /* 13 = 0000 1101 */intc=0;           
c=a<<2;     /* 240 = 1111 0000 */printf("Line 5 - c 的值是 %d\n", c );
c=a>>2;     /* 15 = 0000 1111 */printf("Line 6 - c 的值是 %d\n", c );
return0;
}

结果如下:

Line5-c的值是240Line6-c的值是15


3. 位操作符


&     // 按位与

|      // 按位或

^     // 按位异或


注:

他们的操作数必须是整数

位运算符作用于位,并逐位执行操作 ,&、 | 和 ^ 的真值表如下所示:


p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

下表显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

运算符

描述

实例
&

按位与操作,按二进制位进行"与"运算。运算规则:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) 将得到 12,即为 0000 1100

|

按位或运算符,按二进制位进行"或"运算。运算规则:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) 将得到 61,即为 0011 1101
^

异或运算符,按二进制位进行"异或"运算。运算规则:

0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;
(A ^ B) 将得到 49,即为 0011 0001
~

取反运算符,按二进制位进行"取反"运算。运算规则:

~1=-2;   
~0=-1;
(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式

实例:

#include <stdio.h>intmain()
{
unsignedinta=60;    /* 60 = 0011 1100 */unsignedintb=13;    /* 13 = 0000 1101 */intc=0;           
c=a&b;       /* 12 = 0000 1100 */printf("Line 1 - c 的值是 %d\n", c );
c=a|b;       /* 61 = 0011 1101 */printf("Line 2 - c 的值是 %d\n", c );
c=a^b;       /* 49 = 0011 0001 */printf("Line 3 - c 的值是 %d\n", c );
c=~a;          /*-61 = 1100 0011 */printf("Line 4 - c 的值是 %d\n", c );
return0;
}

结果如下:

Line1-c的值是12Line2-c的值是61Line3-c的值是49Line4-c的值是-61

目录
相关文章
|
3月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
74 0
|
3月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
257 0
|
27天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
34 10
|
1月前
|
编译器 C语言
C语言常见编译错误分类及其解决方案
C语言常见编译错误分类及其解决方案
77 1
C语言常见编译错误分类及其解决方案
|
1月前
|
存储 人工智能 BI
C语言:数组的分类
C语言中的数组分为一维数组、多维数组和字符串数组。一维数组是最基本的形式,用于存储一系列相同类型的元素;多维数组则可以看作是一维数组的数组,常用于矩阵运算等场景;字符串数组则是以字符为元素的一维数组,专门用于处理文本数据。
|
1月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
160 1
|
1月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
173 0
|
3月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
45 6
|
3月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
59 0
十一:《初学C语言》—  操作符详解(上)
|
4月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
44 1
五:《初学C语言》—  操作符