嵌入式C学习笔记1

目录

一、进制转换

 二、位运算

三、结构体

 四、静态变量(static)、extern变量,关键字const

一、进制转换

二进制0B 十六进制0X      例:十进制15  0B1111  0X0F

二进制十进制十六进制转换

嵌入式C学习笔记1

二进制转换十六进制

一位十六进制数等于4位二进制数,通过8421码来计算

嵌入式C学习笔记1

 例:1011011110转化为十六进制为0X2DE

注:不足四位的可以补零,1011011110可以转变为0010 1101 1110,再利用8421码进行计算

嵌入式C学习笔记1

 二、位运算

嵌入式C学习笔记1

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100,B = 0000 1101

A&B = 0000 1100,A|B = 0011 1101,A^B = 0011 0001,~A  = 1100 0011

下表显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

嵌入式C学习笔记1

 C 语言中所有可用的赋值运算符:

#include <stdio.h>
 
int main()
{
 
   unsigned int a = 60;    /* 60 = 0011 1100 */  
   unsigned int b = 13;    /* 13 = 0000 1101 */
   int c = 0;           
 
   c = a & b;       /* 12 = 0000 1100 */ 
   printf("Line 1 - c 的值是 %d\n", c );
 
   c = a | b;       /* 61 = 0011 1101 */
   printf("Line 2 - c 的值是 %d\n", c );
 
   c = a ^ b;       /* 49 = 0011 0001 */
   printf("Line 3 - c 的值是 %d\n", c );
 
   c = ~a;          /*-61 = 1100 0011 */
   printf("Line 4 - c 的值是 %d\n", c );
 
   c = a << 2;     /* 240 = 1111 0000 */
   printf("Line 5 - c 的值是 %d\n", c );
 
   c = a >> 2;     /* 15 = 0000 1111 */
   printf("Line 6 - c 的值是 %d\n", c );
}

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15

三、结构体

结构体是把多个不同类型的数据集合在一个类型之中。

嵌入式C学习笔记1

 结构体的两种使用方法

嵌入式C学习笔记1

 嵌入式C学习笔记1

结构体的参数传递

(1)用结构体变量名作为参数。

(2)用指向结构体变量的指针作为函数参数

(3)用结构体变量的引用变量作函数参数

 四、静态变量(static)、extern变量,关键字const

1、静态变量和静态函数(static)

所有未加 static 前缀的全局变量(这里的全局变量指在源文件的开头处,不包含在源文件的任何函数内)和函数都具有全局可见性,其它的源文件也能访问。static声明的函数和变量不能在另一个文件中引用,也就是说,如果加了 static,就会对其它源文件隐藏,无法进行调用。

利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。static 可以用作函数和变量的前缀,对于函数来讲,static 的作用仅限于隐藏,而对于变量,static 还有下面两个作用。

  • 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。在下次使用静态变量时,则不会在去初始化。
  • 默认初始化初值为0。在静态存储区共有两种变量存储:全局变量和 static 变量,而且在静态数据区,内存中所有的字节默认值都是0x00
  • 总结:首先 static 的最主要功能是隐藏,其次因为 static 变量存放在静态存储区,所以它具备持久性和默认值0。

2、extern变量申明

C语言中extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。这里面要注意,对于extern申明变量可以多次,但定义只有一次。

通常extern申明变量可以有多次,但是该变量的定义只能有一次。该申明的变量事实上就是全局变量,即对程序内所有文件可见

3、关键字const

可以使用 const 前缀声明指定类型的常量,const定义的常量不允许改变。

嵌入式C学习笔记1

具体请看下面的实例:

#include <stdio.h>
 
int main()
{
   const int  LENGTH = 10;
   const int  WIDTH  = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);
 
   return 0;
}

 当上面的代码被编译和执行时,它会产生下列结果:

value of area : 50

 注:把常量定义为大写字母形式,是一个很好的编程习惯。

上一篇:跨境通申报助手V1.0


下一篇:pf4j 默认系统扩展以及机制说明