Linux C - C基础篇(一)
基本资料型别
char: 字元型别,占1个字节,8bit位,取值范围为 -128~127(-2^7~2^7-1)。short: 短整形,2字节,16bit位。int: 整形,4字节,32bit位。long: 长整形,4字节,32bit位。float: 浮点型,4字节,32bit位。double: 双精度浮点型,8字节,64位bool: true/false 使用时需包含标头档案。进位制转换之有符号的十进位制数用二进位制表示
1) 最高位是符号位,0表示正数,1表示负数。2) 如果是正数,正常表示(即原码),如果是负数,先求反码,再求补码(补码为反码加1)即为他的二进位制表示。例如char型的1,用二进位制表示为00000001;char型的-1用二进位制表示为11111111。
-1原码:10000001-1反码:11111110 (求反码符号位不变)-1补码:11111111
常量与变数
常量,就是在程式执行过程中值无法被改变;变数,就是在程式执行过程中内部储存的值随时可以被改变。变数是“可读、可写”,而常量,是“只读”的。整形常量:12、浮点型常量:12.35、实数型常量:1.3e-5、字元型常量:'a'、字串型常量:"abc"、识别符号常量:#define LEN 10。
变数一般存放在内存中:栈区, 静态资料区,全域性变数区, 堆区。函式中定义的变数,如果不加特殊修饰,都是储存在栈区,函式呼叫结束,栈空间被自动释放。
定义变数:
static/auto/... int/char a
例如:static int a;char c;
储存型别:
auto:自动储存型别(一般都省略),申请的变数都储存在栈空间。register:暂存器型变数,申请的变数储存在暂存器上。速度快,效率高,但不能对其进行取地址操作。static:静态储存型别,申请的变数储存在静态区,预设初始化为0,初始化语句只执行一次,生存周期为整个程式结束。目的:限制变数的作用域。extern:外部引用,用于多档案程式设计。被引用的变数必须是在其他档案中定义过的。const:只读储存型别,相当于常数。
型别转换
自动型别转换将一种型别的资料赋值给另外一种型别的变数时就会发生自动型别转换,例如:float a = 10;10是int型别的资料,需要先转换成float型别然后再赋值给变数a。
在不同型别的混合运算中,编译器也会自动地转换资料型别,将参与运算的所有资料先转换为同一种类型,然后再进行计算。转换的规则如下:
转换按资料长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 型别的资料转成 long 型别后再进行运算。所有的浮点运算都是以双精度进行的,即使运算中只有 float 型别,也要先转换为 double 型别,才能进行运算。char 和 short 参与运算时,必须先转换成 int 型别。
强制型别转换
自动型别转换是编译器根据程式码自己判断的,有时候我们需要手动的进行资料型别转换,称之为强制型别转换,例如:
(int)(a+b); //将a + b 求得结果的资料型别强制转换为int型。
运算子
算术运算子: + - * / % ++ --关系运算符: 结果只有真或者假:> = 逻辑运算:&& || !位运算:& | ~ ^ >赋值运算 : = , +=条件运算子: 表示式1 ? 表示式2 : 表示式3;逗号运算:从左到右依次计算,最后一个表示式的值,作为整个表示式的值。sizeof运算子:测试变数所占空间的大小。sizeof(型别) 或者 sizeof(变数名)运算子的优先级特殊运算子>单目运算子>双目运算子>三目运算>赋值运算>逗号运算
以上是老韩关于Linux c基础的总结,如有不足欢迎指点;对Linux c或者Linux驱动感兴趣的朋友可以收藏关注,我会持续更新的,谢谢支援!
