操作符的分类

简介: 操作符的分类

目录

  1. 操作符的分类
  2. 算术操作符
  3. 移位操作符

3.1 左移操作符
3.2 右移操作符

  1. 位操作符
  2. 赋值操作符

总结

  1. 操作符的分类

算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员

  1. 算术操作符
      • / %(加法,减法,乘法,取余,取模)

1
代码演示:

include<stdio.h>

int main()
{


float b = 7 / 2;
float c = 7.0 / 2;
printf("%f\n", b);
printf("%f\n", c);

return 0;

}
1
2
3
4
5
6
7
8
9
10
11
运行结果:

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

代码演示:

include<stdio.h>

int main()
{

int a = 7 % 2;
float b = 7 % 2;
printf("%d\n", a);
printf("%d\n", b);
return 0;

}
1
2
3
4
5
6
7
8
9
运行结果:

由结果可知:变量的类型使用错误的话,结果也是错误的
还要注意:
除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数
% 操作符的两个操作数必须为整数,返回的是整除之后的余数

  1. 移位操作符

<< 左移操作符 >> 右移操作符

3.1 左移操作符
移位规则:左边抛弃、右边补0。
整数是 int 型,占4个字节,有32位表示。其中最高位表示符号,0为正,1为负整数。
函数printf打印的是整数的原码

操作符对整数操作的流程:
(1)先将整数的原码转换成反码
(2)反码 +1转换成补码
(3)最后对整数的补码进行操作
(4)操作结束后,将操作后的补码 -1 转换成反码
(5)将反码转换成最终的原码

正数左移一位:

代码演示:

include<stdio.h>

int main()

{


int a = 2;// 00000000 00000000 00000000 00000010 2的补码
int b = a << 1;//操作的补码二进制位,a本身结果不变
printf("%d\n", a);// 2
printf("%d\n", b);// 4
return 0;

}

1
2
3
4
5
6
7
8
9
10
11
12
分析:

运行结果:

结果表明分析是正确的,且正数左移一位相当于乘2,负数分析的思路相同,需要注意负数原码反码补码之间的关系。

注意:对于移位运算符,不要移动负数位,这个是标准未定义的

intnum=10;
num>>-1;//error

相关文章
|
8月前
|
自然语言处理 算法 C++
在C++语言中非修正算法
在C++语言中非修正算法
57 1
|
8月前
|
存储
指针用法及分类
指针用法及分类
|
8月前
关系操作符
这篇内容介绍了比较运算符,包括大于`&gt;`、小于`&lt;`、等于`==`、大于等于`&gt;=`、小于等于`&lt;=`和不等于`!=`。同时强调不应连续使用多个关系操作符。
35 0
|
8月前
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
142 0
|
C语言
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符
|
存储
如何在分面中添加数学表达式标签?
如何在分面中添加数学表达式标签?
100 0
|
存储 Java
基础二:操作符
基础二:操作符
100 0
|
存储 C语言 索引
【C】操作符归纳+表达式运算原理
【C】操作符归纳+表达式运算原理
243 0
【C】操作符归纳+表达式运算原理