变量与类型
C是一门静态类型的语言,即需要在编译时确定所有变量的类型,具有以下特点:
- 变量在声明时必须指定类型,并且类型在整个生命周期内不会改变;
- 在编译时,如果类型不匹配或有错误,编译器会报错并阻止程序编译通过;
- 静态类型语言可以在编译阶段发现潜在的类型错误,因此能够在一定程度上避免运行时错误。
与之相对的,在Python、JavaScript等动态类型语言中,变量的类型是在运行时确定的,我们可以在程序执行时改变变量的类型,而不需要在编译前确定变量的类型。
当我们在C中创建变量时,我们必须在声明中给出该变量的类型,例如,我们初始化一个 int 类型的变量 deep:
int deep;
其中,变量名可以包含任意大写或小写字母,也可以包含数字和下划线,但是不能以数字开头,即 deep1是有效变量名,而 1deep是无效的变量名。
在变量初始化时,可以直接进行赋值:
int deep = 6;
变量声明后,若想对变量的值进行更改,可以使用 = 重新赋值,但需要注意所提供新值的类型应与原值类型相同。
例如,运行以下程序时:
#include <stdio.h>
int main(void)
{
int deep = 6;
deep = 6.28;
printf("%u", deep);
}
上述代码中,我们将一个浮点数“6.28”赋值给“int”类型变量“deep”,这里将发生隐式类型转换,浮点数“6.28”将会被截断为整数“6”。
C的内置数据类型有int、char、short、long、float、double、long double,进一步介绍如下:
1 整数
C 语言中的整数类型可以分为带符号(signed)和无符号(unsigned)两大类,带符号的整数类型可以表示正数、零和负数,而无符号的整数类型只能表示非负整数(即正数和零)。
注意,char类型通常被用来保存ASCII表中的字母,但是它也可以用来保存 -128 到 127 之间的小整数,其至少占据一个字节。另外,int 占据至少两个字节、short 占据至少两个字节、long 占据至少四个字节。
2 无符号整数
对于以上所有的数据类型,我们都可以在其前面追加一个 unsigned、这样一来,值的范围就不再从负数开始,而是从 0 开始,这在很多情况下是很有用的。与带符号整数类型最高位用作符号位不同(0表示正数、1表示负数),无符号整数类型没有符号位,所有位都用于表示数值,因而数值范围比带符号整数类型的范围大一倍。