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 不能用于取出数字的位数
例如:
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 ,只能为非负数 */