首页 > 其他分享 >操作符详解(上)

操作符详解(上)

时间:2024-11-07 19:46:24浏览次数:3  
标签:例如 num 访问 int ++ 详解 操作符

1.操作符的分类 

2.移位操作符

3.位操作符

4.单目操作符

5.逗号表达式

6.下标访问,函数调用操作符

7.结构体成员访问操作符                                  

一.操作符的分类

   

二.移位操作符

2.1  左移操作符(<<)

移位规则:左边抛弃,右边补0

如上,则是对15的左移(这里涉及到的进制转化和源码,反码,补码请参考详解操作符(二)

 2.2  右移操作符(>>)

移位规则:2.2.1  逻辑右移:左边用0填充,右边丢弃

                  2.2.2  算数右移:左边用该值的符号位填充,右弃

注:上述两种运算方式,在C语言中并没有详细敲定,但一般编译器上采用的还是算术右移

  例:(计算中一般采用补码的形式,具体优点参见详解操作符(二)

警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。
例如:
int num = 10 ;
num>> -1 ; //error

         如下:

三.位操作符

3.1  位操作符的分类

3.1.1      按位与(&)
‌定义‌:对两个二进制数的每一位进行与运算,只当两个相应的位都为1时,结果位才为1,否则为0
‌特点‌:常用于清零特定位、保留公共位等操作


3.1.2.     按位或(|)
‌定义‌:对两个二进制数的每一位进行或运算,只要两个相应的位中有一个为1,结果位就为1。
‌特点‌:常用于设置特定位、合并两个数的特定位等操作


3.1.3     按位异或(^)
‌定义‌:对两个二进制数的每一位进行异或运算,当两个相应的位不相同时,结果位为1;相同时,结果位为0。
‌特点‌:常用于翻转特定位、实现无进位加法等操作。异或运算还具有交换律和结合律,可以用于不借助临时变量交换两个数的值


3.1.4     按位取反(~)
‌定义‌:对一个二进制数的每一位进行取反运算,即0变为1,1变为0
‌特点‌:通常用于无符号整数,对于有符号整数,取反可能会导致符号位的改变,从而影响数的正负。

四.单目操作符

1‌.逻辑反操作符‌:例如,int flag = 5; if (!flag) { ... },如果flag为真(非0),则条件为假。


‌2.负值操作符‌:例如,int num = -5;,将5变为-5。


‌3.正值操作符‌:例如,int num = +5;,确保num为5。


‌4.取地址操作符‌:例如,int a = 10; int *p = &a;,p存储了a的地址


‌5.sizeof操作符‌:例如,printf("%d ", sizeof(int));,输出int类型的大小


‌6.按位取反操作符‌:例如,int num = \~5;,对5的二进制表示进行按位取反


‌7.自增操作符‌:例如,int num = 5; num++;,num变为6
‌8.自减操作符‌:例如,int num = 5; num--;,num变为4

ps:  "++"和"--”
      二者 分为前置++和后置++;前置--和后置--,                                                                                    使用规则是 前置++先+1后使用,后置++先使用后+1,                                                                      (前置--和后置--与前置++和后置++使用规则一样)


‌9.间接访问操作符‌:例如,int *p = &a; *p = 20;,通过指针p修改a的值


‌10.强制类型转换操作符‌:例如,int num = (int)3.14;,将3.14转换为整数3

五.逗号表达式

5.1  简而言之,逗号表达式就是用逗号隔开的多个表达式

5.2  过程:从左向右依次执行计算,整个表达式的结果取决于最后一个表达式的结果

  例:

六.下标访问和函数调用操作符

6.1  下标访问操作符‌:其语法形式为数组名[索引值],用于访问数组中的特定元素。例如,arr表示访问数组arr的第10个元素


6‌.3  函数调用操作符‌:其语法形式为函数名(参数列表),用于调用函数并传递参数。例如,test()表示调用无参数的test函数,test(3, 5)表示调用有参数的test函数,传递两个参数3和5

七.结构体成员访问操作符

 ‌ 结构体访问操作符主要包括点操作符(.)和箭头操作符(->)

7.1  结构体成员的直接访问
结构体成员的直接访问是通过点操作符(.)进行的。点操作符接受两个操作数,第一个操作数是结构体变量,第二个操作数是结构体中的成员变量,例如:

7.2  结构体成员的间接访问
有时候我们得到的不是一个结构体变量,而是一个指向结构体的指针。这时,我们使用箭头操作符(->)来访问结构体的成员,例如:

ok,这就是最基础的操作符的介绍

标签:例如,num,访问,int,++,详解,操作符
From: https://blog.csdn.net/2403_87691282/article/details/143590882

相关文章

  • C语言逻辑操作符
    C语言逻辑操作符在C语言中,逻辑操作符用于执行逻辑运算,它们通常用于控制流语句中,如if和while循环,以根据给定的条件逻辑来决定程序的执行路径。C语言提供了三种逻辑操作符: 1.逻辑与(&&):当两个操作数都为真(非零)时,结果为真;否则结果为假。 2.逻辑或(||):当两个操作数中......
  • Day31--构造器详解
    Day31--构造器详解使用new关键字创建对象。使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:必须和类的名字相同;\2.......
  • TCP Fast Open 详解
    TCPFastOpen详解TCPFastOpen(TFO)是对传输控制协议(TCP)的一种扩展,用于加快两个端点之间连续TCP连接的打开速度。以下是关于TCPFASTOPEN的详细介绍:产生背景和目的:在传统的TCP三次握手过程中,建立连接需要一个完整的往返时间(RoundTripTime,RTT),这对于一些对延迟敏感......
  • 《智能驾驶之激光雷达算法详解》外参标定
    本书的第三章、第四章是对标定算法的讲解,第三章着重讲解了激光雷达相对于车体的外参标定算法,将激光雷达外参算法初步分为了三类,①基于道路、标定物特征的雷达动态外参标定。②基于手眼模型的雷达外参标定③基于积累点云特征化的雷达外参标定算法。本章对分别这三个方向选取了比......
  • 高级 SQL 技巧详解
    文章目录高级SQL技巧详解一、引言二、窗口函数1、窗口函数的使用1.1、RANK()函数示例1.2、常用窗口函数三、公共表表达式(CTE)2、CTE的使用2.1、CTE示例四、索引优化3、索引的创建与优化3.1、创建索引3.2、索引类型与注意事项五、事务管理4、事务的基本操作4.1......
  • SpringBoot整合Thymeleaf详解
    文章目录SpringBoot整合Thymeleaf详解一、引言二、SpringBoot与Thymeleaf的整合1、配置Thymeleaf1.1、添加依赖1.2、配置属性2、创建Controller三、编写Thymeleaf模板四、总结SpringBoot整合Thymeleaf详解一、引言在现代JavaWeb开发中,SpringBoot因其简化配置和......
  • Nuxt.js 应用中的 build:error 事件钩子详解
    title:Nuxt.js应用中的build:error事件钩子详解date:2024/11/7updated:2024/11/7author:cmdragonexcerpt:build:error是Nuxt.js中的一个生命周期钩子,当构建过程中发生错误时,该钩子将被调用。通过此钩子,开发者可以捕获和响应构建错误,进行相应的处理,例如记录日志或......
  • AI智能分析视频分析网关室内消防逃生通道占用检测算法详解
    在公共安全领域,特别是在火灾等紧急状况下,确保消防逃生通道的畅通对于快速疏散人群至关重要。但是,由于多种原因,这些逃生通道常常被堵塞或占用,极大地增加了疏散时的风险。为了应对这一挑战,人工智能驱动的室内消防逃生通道占用视频分析网关应运而生,成为提高消防安全水平的关键工具。......
  • LVM 扩容详解
    一、LVM扩容1.查看磁盘分区情况:fdisk-l  结果如下,可以看到有一块新的磁盘,需要扩容到 lvm中 2.查看pv、vg、lv情况  记录下vg名,如图,这里是centos 3.将新硬盘分区初始化pvcreate/dev/vdc(新硬盘)  可以看到如下信息即为初始化成功 4.将初始......
  • 山泽HDMI线与光纤音频线的区别详解
    在现代家庭娱乐系统中,选择合适的连接线材对于提升视听体验至关重要。山泽作为一家知名的线材品牌,提供了多种高质量的HDMI线和光纤音频线,帮助用户轻松搭建高性能的家庭影院。本文将详细介绍HDMI线与光纤音频线的区别,并推荐几款山泽的优质产品。HDMI线-高清晰度多媒体接口多......