操作符的分类

简介: 操作符的分类

目录

  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

相关文章
|
6月前
|
C#
赋值组合运算符
赋值组合运算符
31 1
|
6月前
关系操作符
这篇内容介绍了比较运算符,包括大于`&gt;`、小于`&lt;`、等于`==`、大于等于`&gt;=`、小于等于`&lt;=`和不等于`!=`。同时强调不应连续使用多个关系操作符。
29 0
|
6月前
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
63 0
|
6月前
|
编译器 C++ 索引
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
C learning_13 操作符前篇(条件操作符、 逗号表达式、 下标引用、函数调用和结构成员、 表达式求值)
|
6月前
|
存储 C语言
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)
C learning_12 操作符前篇(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)
|
算法
表达式转换-中缀转后缀表达式后计算-数据结构与算法
表达式转换-中缀转后缀表达式后计算-数据结构与算法
386 0
表达式转换-中缀转后缀表达式后计算-数据结构与算法
|
数据库
机房重构—在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
212 0
|
C语言
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符
C语言——操作符(中)单目操作符、关系、逻辑、条件操作符