这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战」
最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
1.操作符分类
1 | c复制代码算术操作符: + - * / % |
1 | c复制代码移位操作符: << >> |
1 | c复制代码位操作符: & | ^ |
1 | c复制代码赋值操作符: = += -= *= /= %= &= ^= & * |
1 | c复制代码单目操作符: sizeof ! ++ -- |
1 | c复制代码关系操作符: > >= <= < != == |
1 | c复制代码逻辑操作符: && || |
1 | c复制代码条件操作符: ?: 唯一的一个三木操作符 |
1 | c复制代码逗号表达式: . |
1 | c复制代码下标引用,函数调用和结构成员: [] () . -> |
/ -除号操作符
对于除号操作符:
1.两边都是整数:执行整数除法,与保存的类型无关
1 | c复制代码int main() |
1 | c复制代码//若接收类型为double类型 |
% - 取模操作符
对于取模操作符:%操作符两边元素只能为整形
1 | c复制代码int a = 10; |
1 | c复制代码int a = 10; |
1 | c复制代码int a = 10; |
A % B : 最终得到的值小于B
所以:
rand():产生随机数的函数-通常配套srand()函数:随机数生成器使用
(具体内容看分支与循环猜数字游戏)
–>srand(unsigned int)time(NULL) //拿时间戳作为参数
生成的随机数范围:0-32767
所以若要得到0-99的数:rand() %100
若要得到1-100的数:rand()%100 +1
<< >> 左移右移操作符
<< 左移操作符
右移操作符
移动的是二进制位(补码) –只针对整形
左移操作符 <<
左边丢弃,右边补0
左移相当于数值乘2
1 | c复制代码int c = 4; |
右移操作符 >>
1 | c复制代码情形1:逻辑右移:左边用0填充,右边丢弃 |
当前VS2019采用的是算术右移
1 | c复制代码int a = 1; |
1 | c复制代码//err写法 |
注意:左移/右移操作数只能为整形,不能为浮点数
1 | c复制代码float c = 4,5f; |
补码为全1 -> %d打印 表示-1
补码求补码 ->原码
关于 & | ^
只能用在整形数据(正数,负数都可以)!
& 按位与
1 | c复制代码 1001 |
| 按位或
1 | c复制代码 1001 |
^ 按位异或
1 | c复制代码 1001 |
使特定位翻转,即异或上该特定位为1,其它位为0的二进制序列
1 | c复制代码如: X: 1100 0011 使倒数第三个二进制位翻转 |
1 | c复制代码使特定位翻转: |
2.如何得到二进制序列最后一位比特位是1还是0
首先,整形在内存中以补码形式存储
方法:只需要让该位按位与上1,即可得知最后一位比特位是0还是1
若最后一位比特位为1:结果为1 否则为0
1的二进制序列: 00000000 00000000 00000000 00000001
符号位为0,正数:原反补相同
其他位比特为0,所以和比特位相于的结果为0
1 | c复制代码int a =15; |
1 | c复制代码int main() |
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
本文转载自: 掘金