变量的定义

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。

变量声明

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量定义。

注意:

在程序中可以多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。

整型声明时,若至少有一个其它的说明符,int可以省略,如下面的定义是等价的:

unsigned short int a;
unsigned short a;

signed一般只用于修饰char,其它类型在缺省的情况下默认带符号。

下面的定义都是等价的:

short; signed shortshort int;signed short int;
int; signed int ; signed;
long;signed long;long int;signed long int;
unsigned short; unsigned short int;
unsigned int;unsigned;
unsigned long;unsigned long int;
变量的初始化

变量的初始化指的是给变量赋一个值。

C 中的左值(Lvalues)和右值(Rvalues)

C 中有两种类型的表达式:

左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。

右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

初始化局部变量和全局变量

当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化,如下所示:

数据类型

初始化默认值

int

0

char

''

float

0

double

0

pointer

NULL

正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,因为未初始化的变量会导致一些在内存位置中已经可用的垃圾值。