新闻  |   论坛  |   博客  |   在线研讨会
Linux C - C基础篇(一)
嵌入式Linux | 2023-01-11 11:05:42    阅读:430   发布文章

基本数据类型
  • 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 使用时需包含头文件<stdbool.h>。

进制转换之有符号的十进制数用二进制表示

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驱动感兴趣的朋友可以收藏关注,我会持续更新的,谢谢支持!


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
专注于嵌入式Linux知识的分享、交流
推荐文章
最近访客