操作符详解(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;

 

 

 


相关文章
|
21天前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
105 14
|
25天前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
41 8
|
25天前
|
存储 网络协议 C语言
【C语言】位操作符详解 - 《开心消消乐》
位操作符用于在位级别上进行操作。C语言提供了一组位操作符,允许你直接操作整数类型的二进制表示。这些操作符可以有效地处理标志、掩码、位字段等低级编程任务。
72 8
|
25天前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
63 7
|
25天前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
269 6
|
25天前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
34 5
|
25天前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
35 5
|
25天前
|
安全 搜索推荐 Unix
【C语言】《回调函数》详细解析
回调函数是指一个通过函数指针调用的函数。它允许将一个函数作为参数传递给另一个函数,并在特定事件发生时执行。这种技术使得编程更加灵活,可以动态决定在何时调用哪个函数。
40 1
|
存储 C语言
如何深入掌握C语言操作符及表达式求值(详解)(三)
本文章主要讲解点: ​​​​​​​各种操作符的介绍 表达式求值
如何深入掌握C语言操作符及表达式求值(详解)(三)
|
C语言
如何深入掌握C语言操作符及表达式求值(详解)(一)
本文章主要讲解点: ​​​​​​​各种操作符的介绍 表达式求值
如何深入掌握C语言操作符及表达式求值(详解)(一)

推荐镜像

更多