这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战」
最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
~ 按位取反操作符
1 | c复制代码对二进制序列进行取反 |
如:
1 | c复制代码int main() |
6.程序题:如何把二进制序列某一位为0的翻转1
或运算:某一位或上0,对应的位不翻转。
某一位或上1,如果该位为1,不翻转。如果为0,翻转
方法:使某一位二进制数翻转为1,就或上其他为0,只有对应该位的二进制为1的数
1 | c复制代码//使0的某一位翻转 |
想要第n个二进制位变成1 只需要 按位或(|)上 1<<n-1即可 ( 1左移n-1位的数)
7,程序题,如何把二进制序列某一位为1的翻转0
方法: 1左移n-1位的数按位取反 再与上该数即可
image.png
1 | c复制代码int main() |
以8bit为例子
1左移0位:0000 0001
1左移1位:0000 0010
1 | c复制代码int main() |
&& || 逻辑与 逻辑或
C语言中0表示假,非0表示真
&&发生短路现象:
1 | c复制代码 A&&B&&C 当A,B,C同时为真时,结果才为真 |
1 | c复制代码int main() |
||发生短路现象:
1 | c复制代码A || B || C A,B,C只要有一个为真,结果就为真 |
1 | c复制代码int main() |
唯一的三目操作符 ? :
1 | c复制代码P? A:B ; |
逗号表达式
逗号表达式的结果为最后一个式子
1 | c复制代码int main() |
1 | c复制代码a = get_val(); |
—>上面的表达式也可以用逗号表达式
1 | c复制代码while(a = get_val(),count_val(a),a > 0) |
[] 操作符
1 | c复制代码int main() |
数组名是首元素地址,所以 arr+i: 下标为i的元素的地址
1 | C复制代码arr[4] :[]是操作符,arr和4是它的两个操作数 |
再一次说明[]是操作符 arr和4是操作数而已
():函数调用操作符
如:
strlen() 函数:返回的是无符号整形
1 | c复制代码// /0 不算进字符串长度 |
对于函数调用操作符 ()
接收一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数
如: my_Add(a,b) ()有3个操作数为 my_Add (函数名) a , b
结构体成员访问操作符 -> .
创建结构体类型本身不占用内存空间,创建结构体变量时才开辟空间
1 | c复制代码struct Stu |
1 | c复制代码struct Stu |
注意事项:
不可以直接把字符串放进结构体里面的数组中。要使用strcpy函数
1 | c复制代码#include<string.h> |
1 | c复制代码总结: |
6.整形提升
当计算的两个操作数的类型为short或者char,会发生整形提升,提升为int
7.算术转化
大于4个字节的类型变量进行计算,发生的是算术变化,往高字节的类型转化,最后的结果类型为参加计算的变量类型中字节最大的。
例如:
1 | c复制代码int a = 0; |
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
本文转载自: 掘金