操作符详解(C语言基础深入解析)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 操作符详解(C语言基础深入解析)

操作符分类

• 算术操作符: + 、- 、* 、/ 、%

• 移位操作符: << >>

• 位操作符: & | ^ `

• 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=

• 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)

• 关系操作符: > 、>= 、< 、<= 、 == 、 !=

• 逻辑操作符: && 、||

• 条件操作符: ? :

• 逗号表达式: ,

• 下标引⽤: []

• 函数调⽤: ()

进制之间的转换

 二进制转十进制相信大家已经会了,包括十进制转化成二进制。

 那二进制转化成其他进制又应该怎么算呢:

以二进制转化成八进制为例子,首先把0到7的数字转化成二进制,发现最多有三个二进制位就够了,比如7的二进制位是111,如果我们把01101011转化成八进制,从右边向左边;

0 1 101 011
1 5 3

二进制转十六进制:

0到9,a到f各写成二进制,如01101011

0110 1011
6 b

十六进制需要在前面加上0x,这个时候就0x6b

 

移位操作符

<< 左移操作符

>> 右移操作符

左移操作符:

规则;左边抛弃,右边补0;

#include<stdio.h>
int main()
{
  int num =10;
  int n = num << 1;
  printf("num=%d\nn=%d\n", num, n);
  return 0;
}

出现这样的结果就是在二进制的情况下,左边抛弃了一位,右边补了一个0;

右移操作符

1.逻辑右移:左边用0补充,右边丢弃

2.算术右移:左边用原该值填充,右边丢弃

在不同的编译器上,使用的情况不一样。

左移操作符向左移动一位相当于乘上一个2 ^ 1,左移两位就相当于乘上一个2 ^ 2。而右移操作符右移一位相当于除上一个2 ^ 1。

 

位操作符

&     按位与

|      按位或

^      按位异或

~     按位取反

注意;操作数必须是整数

#include<stdio.h>
int main()
{
  int num1 = -3;
  int num2 = 5;
  printf("%d\n", num1 & num2);
  printf("%d\n", num1 | num2);
  printf("%d\n", num1 ^ num2);
  printf("%d\n", ~0);
 
  return 0;
}

&     按位与

运算符 “ & ” :把参见运算两个数所对应的二进制位分别进行“与”运算,即:两位同为“1”,结果才为“1”

|      按位或

运算符 “ | ” :把参见运算两个数所对应的二进制位分别进行“或”运算,即:两位同为“0”,结果才为“0”,否则为1

^      按位异或

按位异或运算规则为:把参见运算两个数所对应的二进制位分别进行“异或”运算,相同为0,相异为1

~     按位取反

 ~     按位取反:把目标的二进制位按位取反,即:使得每一位上的0变成1,1变成0

单目操作符

! ++  --  &  *  sizeof等

结构成员访问操作符

结构是一些值的集合,这些值称为成员变量。

 

struct stu
{
  char name[20];
  int age;
  char sex;
}

整型提升

C语言中,整型算术运算总是以缺省整型的精度来运算的,所以为了获得这个精度,表达式中字符和短整型操作数在使用之前会被转化成普通整型

如何进行整型提升

 1.有符号 整数提升是按照变量的数据类型来提升的

 2. 无符号整数提升,高位补0;

 

 

 


相关文章
|
2月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
|
2月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
|
2月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
38 6
|
2月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
50 0
十一:《初学C语言》—  操作符详解(上)
|
2月前
|
程序员 C语言
位操作在C语言中的解析与应用
位操作在C语言中的解析与应用
73 0
|
2月前
|
JavaScript 前端开发 开发者
深入解析JavaScript中的比较操作符
【8月更文挑战第20天】
18 0
|
3月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
37 1
五:《初学C语言》—  操作符
|
3月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
4月前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件

推荐镜像

更多
下一篇
无影云桌面