前言:
~ 对一个数的二进制按位取反
*间接访问操作符(解引用操作符)
这里的int对应的是整型,而a的赋值是小数 这样运行的话可能会丢失数据这样就没有问题了,打印为3,强制转换。同样这个无符号整型也是一样。
sizeof 和 数组
我们看看最后打印的是什么?
第一个计算的是数组的大小即10乘4=40
第二个也是一样10乘1=10
因为类型不同,即所乘的字节不一样
我们看看后面的
第三个为数组传参,形参可以写成数组,也可以写成指针,但本质上是指针,即打印出来为4/8 看是x86还是x64
第四个同理可得,4/8
下面看一个提问
这里是可以的哦
看看运行的行云流水
本质其实都是一样的
arr[i] 其实就是 *(arr+i)
我由第一个地址就可以顺藤摸瓜知道后面全部的
关系操作符
这比较简单,就不讲了,要注意==和=的区别
逻辑操作符
注意区分& | 与他们的区别就可以了
同样判断润年也可以
这样就比较简洁
下面就上一个360笔试题
1 2 3 4
看看你对了吗?
a++ 为后置加加,先应用后++,即 (a++)为0,a为1,又为&& 操作符,有一个为假就是全假,后面的就没有必要再算了。
a=1呢?
2 3 3 5
这次就是都为真,全部都要计算。
改 || 呢?
这个是有真就是真,但是后面就不给你计算了,也称为短路
这个呢?
现在知道电脑也爱偷懒了
条件操作符
具体运行就是这样
这个也叫三目操作符,让我想起来了三土老师
是不是感觉太繁杂了
所以正确地学习应该是越学越简易才对。
逗号表达式
要记住最后的结果是最后一个表达式的结果哦13
再来看看这个
简化
下标引用,函数调用和结果成员
下标引用
函数调用
接受一个或者多个操作符,第一个操作符就是函数名,剩余的操作符
访问一个结构的成员
有内置类型和自定义类型
加一个书名号跟加严谨
下面的知识点是以前讲过
看看
这个是值传递,所以打印的还是20
这个就是传址了,最后为18
表达式求值
隐式类型转换
看看这个是不是打印130呢?
那这就错了,char不是整型,3属于int,char与int所存储的字节(比特)不同,硬是要表示的话,就戳断。还有一个叫整型提升
在相加的时候就需要整体提升了。是0就填0,是1就填1.
后面打印的是10进制整数,所以就是三码的转换。
这才是真正的结果。为什么不打印130呀?因为这是有范围的哦
就让我来告诉你为什么范围是这样
这表示的是补码哦
最后正负一起就是
下面我们来看看无符号的char
他是变化3个的
这样理解也是可以的
主要还是要知道整型提升这个事
下面再来看一题
其实打印的是c,因为int不用提升呀,其他两个一提升就都不一样的了,就这么简单。
再来一个题看看
第一个就是普通数组大小,
后面的看看,都显示了int整型了,这不就明白了
算术转换
操作符的属性
其实就是不要乱搞,该用括号的用括号,看看,这个如果不是数字呢?
看看如果搞&& 和 || 这俩个让电脑偷懒,那不就完了。
看看是先c 还是先–c,后影响c。这结果都是不一样的哦
这个就是闲的没事做。
这个你知道先搞哪个fun() 吗?因为static 出函数是不会消失的,累加。
看看这两种编译器运行的结果都是不一样的,
想到了一个隐藏的bug,自己使用专属编译器,是正确的的结果。如果别人要白嫖你代码,那他就也是一样的编译器。就给自己加码了,哈哈
最后还是要按规范写代码
守得云开见月明