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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 操作符详解(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;

 

 

 


相关文章
|
3月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
73 0
|
3月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
254 0
|
24天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
33 10
|
1月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
160 1
|
1月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
169 0
|
1月前
|
程序员 编译器 数据处理
【C语言】深度解析:动态内存管理的机制与实践
【C语言】深度解析:动态内存管理的机制与实践
|
1月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
3月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
57 0
十一:《初学C语言》—  操作符详解(上)
|
3月前
|
程序员 C语言
位操作在C语言中的解析与应用
位操作在C语言中的解析与应用
88 0
|
3月前
|
JavaScript 前端开发 开发者
深入解析JavaScript中的比较操作符
【8月更文挑战第20天】
25 0

推荐镜像

更多