[C语言学习笔记四]变量与系统的交互

使用 const 建立常量和使用 volatie 优化变量

C语言中使用 const 定义常量。编程

例如:编辑器

const INT a = 10;

此处若是添加a = 20;,编辑器则会报错,由于此处 a 是只读的。
在编译过程当中,由 const 定义的常量使用字符表存储,而不占用内存,提升了程序的效率。优化

注意:为了区别变量和常量,编程时经常使用大写字母来置顶常量的名称来提升可读性。code

使用 volatile 定义一个经常须要更改的变量。使用 volatile 定义的变量会在编译器优化时更新,而不是读取在寄存器中的副本。内存

例如:编译器

int data = 1,a,b;
a = data;
...
b=data;

a 在请求变量 data 时,data 的值被写到了寄存器中。但此时 data 是一个快速更新的值,在程序没有预料到的时候更改成新的值;而 b 请求 data 的值时,由于寄存器中有现成的 data 值,因此程序会直接将寄存器中过期的 data 值给 b ,所以程序可能出现错误。it

volatile data a = 1;
int a,b;
a = data;
...
b = data;

但当使用 volatile 变量时,程序会从新读取 data 的值给 b ,因此能避免此类错误。编译

使用简短的数据类型名

有时候会遇到长数据类型名,例如 long long int ,不方便引用。此时可以使用 typedef 来为 long long int 指定新数据类型名。
例如:class

typedef int it;
it data1 =1;  /* 使用名称定义为 it 的 int 型数据类型 */
it data2 =2;

2020年2月20日补充效率

使用 sizeof 取得数据大小

使用 sizeof() 能够取得括号内最终数值所占的字节数。

注意:sizeof 不能用于取出数字的位数

例如:

int data = 10
int main(void) {
    printf("%d\n",sizeof(data));   /* 输出内容为 4 */
    return 0;
}

有符号数和无符号数

C语言对变量提供了两个类型。其中一个为 signed ,即有符号数;而另外一个为 unsigned ,即无符号数。 signed 型能够用来表示任何数,而 unsigned 型只能用来表示非负数。
其中, signed 型数在内存中的首位用于表示正负,能够为 0 或 1 。unsigned 型则是直接表示。因为这种缘由,产生了“安卓手机时间只能调到 2038 年”的说法。由于 C 语言的时间使用 signed 型表示,到达这个时间,除第一位外,其余数位均为 9 ,所以便会迫使进 1 ,所以引起错误使时间会变为负。
例如:

signed int data = -1 /* 也能够是 1 */
unsigned int data = 1 /* 只能为 1 ,只能为非负数 */
相关文章
相关标签/搜索