操作符
本文就不像之前写的博客一样详细介绍每个操作符了
这里会挑选几个重要的操作符出来讲解并且讲解为什么它们重要以及我目前所知道的它们的用法
左右移操作符
我们这里写出下面的代码
int a = 1; int b = a << 5;
那么这个时候的b是等于多少呢?
可能有些同学这个时候就开始动笔写写画画了是吧
其实很简单 一眼就能看出来b的结果是32
为什么呢?
因为我们这里这里使用的左移操作符 它的含义实际上就是将一个数字扩大2的n次方倍(n为操作符右边的数字)
这样一来我们就很明确了
这几行的代码的意思就是b等于a乘2的五次方
那么接下来的问题相信大家也能很好的解决了
int a = 1; int b = a << 5; b = b >> 2;
这里实际上就是将b缩小2的2次方倍 也就是32除以4 最后的结果当然是8啦
到最后我们总结下
左移操作符实际上就是将操作数扩大2的k次方倍
右移操作符实际上就是将操作数缩小2的k次方倍
条件操作符
语法格式如下
Exp1?Exp2:Exp3
之所以说这个操作符重要是因为如果能够或用的话 它能够大大缩短我们的代码行数
就像我昨天写的一道使用滑动窗口解决最小长度子数组的问题
最后一行的代码如下
return ans == INT32_MAX ? 0 : ans;
我这里就使用了一个条件表达式来解决 如果这里不使用条件表达式的话就要使用if else来判断了
代码会很长
关键字
这一块没有什么好说的 虽说我们之间讲了register关键字 但是从我敲代码这两个月以来几乎没有碰到过
也可能是学的程度不够深 这两个月学习以来总结最重要的一个关键字就是typedef了
不管是做项目还是手撕数据结构的时候 使用typedef重新定义一个清晰的变量都可以对我们有很大的帮助
比如果再链表中 我们通常会写下类似下面的代码
typedef int Valtype;
这段代码的意思是给int取了个别名叫做Valtype
这样子做有两个好处
如果我们不想存储int类型的数据了 我们只需要将typedef的int变成char就行
大大增加代码的可读性 一看到Valtype我们就知道这个是存储数据的类型了
指针
越学到后面越觉得指针就是地址这句话概括的很精辟
通过这个地址(指针)我们可以访问到里面的内容 并可以做出增删查改的操作
当然因为在32 64位系统下地址大小的不同 我们指针的大小也不尽相同
在32位系统上为4个字节(32bit)
在64位系统上为8个字节(64bit)
结构体
在学习了C++中的class关键字之后再来看c语言中struct定义结构体
我们是不是就可以将struct定义的结构体理解成一个全部public的类啊 里面只有成员对象没有成员函数
我们可以随意访问里面的内容来修改数据
总结
复习了之前写的博客 写了一些自己新的理解
由于博主水平有限 错误在所难免 希望大佬们看到可以及时指正
如果本文帮助到了你 别忘记一键三连啊
阿尼亚 哇库哇库