算数操作符‘+’, '-', '*', '/', '%'.
+,---,*这三个就不说了,小学题目嘛。
‘/’号, ‘%’
‘/’号在int类型时计算结果为整数,在double等类型下才算出小数。
‘%’取余数,两个数相除取余数。
10 % 3 = 1.
移位操作符(只能运用于整数)
再说这个操作符之前,先说明,移位操作符移动的是二进制,而在32位设置下,整形数字是占32bit
拿3举例,本来3在二进制下是:0011;
在计算机下:00000000000000000000000000000011
第一位代表正负,1为负,0为正。
那-5是在二进制中是多少
10000000000000000000000000000101
整数在计算机中的存储
整数在计算的存储不是存储整数原来的二进制表示(原码),而是存储补码。
引进概念:原码,反码,补码。
在正数中原码 = 反码 = 补码。
负数中:反码 = 原码按位取反(0变成1, 1 变成0)。符号位不变
补码 = 反码 + 1。
符号<<
左移符号位:<<
位移规则:左面抛弃,右面补0。(移动的是二进制位)
int a = 5; int b = a << 2;
那么b等于多少?
代码演算一下:
符号>>
向右操作符:>>
移位规则:1.逻辑右位:左边填充0,右边丢弃。
2.算术右移:左边用原值符号位填充,右边丢弃
这个方法,取决于编译器。
跟>>相同,我们拿int a = -1;int b = a >> 1;示例
算术右移
逻辑右移
位操作符:&, | , ^
&:按位与:两个数的补码,只有都是1的时候才是1,其他情况下都是0.
拿int a = -5; int b = 3;做例子,
在编译器中实验一下
| :按位或
| : 有1便是1。
还是拿 int a = -5, int b = 3做个栗子。
在编译器中验证一下
冰狗,对了。
^ 按位异或
^ : 相同为0,相异为1.
老规矩,-5,3上路。
来来来编译器见面。
没错呢。
赋值操作符
这个东西,我也不知道咋写。直接来看代码。
什么都不要问,”=“ 就是赋值符号。
复合赋值操作符
这东西没的说啊,就刘姥姥如小木屋————一眼到底。
这个就说几个吧。
!: 逻辑反操作
让真的数变假(也就是为0)假的数变真,(也就是为1)
sizeof
sizeof是求变量所占空间的大小的
不同类型,占据的内存空间是不同的。
关系操作符
没啥好说的,但是有一个小技巧,在判断一个变量是否等于一个常数时候,可以常数在前面,变量在后边,容易找寻BUG。
逻辑操作符
逻辑操作符&&与||
&&:逻辑与
它是讲条件并且的关系。
&&:假如一个条件是假,就不再算下面的条件。
这个答案应该是啥?
||:逻辑或
它是条件或者的关系。例如:
||:当做操作符为真的时候,不再向右计算
如图:
条件操作符
说白了,三个式子,第一个判断式,加入成立,就输出第二个式子,不成立第三个式子。
例子:比较大小。
假如用if语句来写:
换个方法:
简洁很多,可以减少代码量,提升效率。
逗号表达式
它将很多个式子用",”隔开,从左到右最后表达出来的是最后一个式子。
我们来看一段好玩的代码:
c等于多少?
我们只看最后一个式子的结果,把最后一个式子的结果赋给c。
下标引用、函数调用和结构成员
1.[]下标引用操作符。
数组里的,符号是从0开始的,没啥好说的。
如图吧:
数组[]里的排序从0开始,而不是1.
2.()函数调用操作符
没得讲.....
3.访问结构体的成员(其实是指针)
. 结构体.成员名
-> 结构体指针->成员名
我们直接上图: