3-3、C语言的变量

39 阅读3分钟

上一章学习了常量,再来看下什么是变量

什么是常量?

常量又称为常数,是在程序运行过程中其值不能改变的数据,例如: -1,938等等。

常量有以下几种:整形常量实型常量字符型常量字符串常量符号常量

什么是变量?

变量是在程序运行过程中,其值可以改变的数据。

变量具有三种属性:

1、变量名
每个变量都必须有一个名字,即变量名。变量名要采用小写英文字母。

2、变量值
在程序运行过程中变量的值存储在内存,并通过变量名来引用变量的值。变量中所保存的数据称为该变量的值,变量值的数据类型与变量的数据类型一致。

3、变量类型
变量类型可以是任何一种数据类型,既可以是基本整型、短整型、长整型、无符号基本整型、无符号短整型、无符号长整型、单精度实型、双精度实型和字符型等基本类型,也可以是数组型、结构体类型等构造类型,也可以是指针类型。每个变量都要占用若干个连续的内存字节以保存数据,所占用的内存字节数取决于变量的数据类型,所占用的第一字节的地址称为变量的地址。C语言规定,变量的地址用 “ &变量名 ”表示。

变量的数据类型

整型变量

根据占用内存字节数的不同,整型变量分为四种,即:
基本整型,类型关键字为int
短整型,类型关键字为short[int]
长整型,类型关键字为long[int]]
无符号整型,又分为无符号基本整型(unsigned [int])、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种。

[]是可选的意思

内存

上面各种类型的整型变量占用的内存字节数,随着编译系统的不同而不同。
在16位编译器中,一般一个int型变量占用2字节,且long型(4字节)>= int 型(2字节) >= short型(2字节);
而在32位编译器中,一个int型变量占用4字节,long型变量占用4字节,short型变量占用2字节。可以用 sizeof(类型标识符) 测量某一类型所占用的内存字节数。

显然,不同类型的整型变量,占用的内存字节数不同,其值域也不同。占用内存字节数为n的有符号整型变量,其值域为 2n81-2^{n*8-1} ~ (2n812^{n*8-1});占用内存字节数为n的无符号整型变量,其值域为0~(2n812^{n*8-1})。例如:16位PC中的一个int型变量,占用内存2字节,其值域为2281-2^{2*8-1} ~ 228112^{2*8-1}-1,即-32768~32767;一个unsigned型变量的值域0~(22812^{2*8-1}),即0 ~ 65535。

实型变量

实型变量分为两种:
单精度实型,类型关键字为float,一般占用内存4字节,保留6~7位有效数字。
双精度实型,类型关键字为double,一般占用内存8字节,保留15~16位有效数字。

例如:
float a;
a = 123456.789;    // 实际a的值是123456.7,仅保存7位有效数字。

由于实型变量占用有限的内存单元,因此能够提供的有效位数总是有限的,有效位之外的数字将被舍去,由此将会产生一些误差。应当避免将一个很大的数和一个很小的数直接相加或相减,否则将会“丢失”小的数。

字符型变量

字符型变量的类型关键字是char,存放的是字符的ASCII码值(无符号整数),占用内存1字节。
需要注意的是,字符串只能是常量,C语言中没有字符串变量,而是用字符数组存放字符串变量。