目录
四、静态变量(static)、extern变量,关键字const
一、进制转换
二进制0B 十六进制0X 例:十进制15 0B1111 0X0F
二进制十进制十六进制转换
二进制转换十六进制
一位十六进制数等于4位二进制数,通过8421码来计算
例:1011011110转化为十六进制为0X2DE
注:不足四位的可以补零,1011011110可以转变为0010 1101 1110,再利用8421码进行计算
二、位运算
假设如果 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 语言中所有可用的赋值运算符:
#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
三、结构体
结构体是把多个不同类型的数据集合在一个类型之中。
结构体的两种使用方法
结构体的参数传递
(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定义的常量不允许改变。
具体请看下面的实例:
#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
注:把常量定义为大写字母形式,是一个很好的编程习惯。