for (...)
for (...){
...
if (disaster)
goto error;
}
...
error: ...
最后,让我们来讨论一下变量,变量是对程序中数据所占用内存空间的一种抽象。我们先来了解一下变量的类型。
ANSI标准规定整形变量属性表
数据类型
占用字节数
二进制位
取值范围
int
2
16
-32768--32767
short[int]
2
16
-32768--32767
long[int]
4
32
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)-2147483648--2147483647
unsigned[int]
2
16
0--65535
unsigned long[int]
4
32
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)0--4294967295
实数基本类型表
实数类型
存储字节数
最小数值范围
有效位
float
4
10^-38--10^38
6-7
double
8
10^-308--10^308
15-16
long double
16
10^-4932--10^4932
18-19
在C中,我们还可以设置变量的存储属性,已确定变量的存储位置,C中定义了4种存储属性:auto register extern和static 。
TC中默认的是auto型,作用域为当前函数,在函数结束时存储空间被释放。
register型变量直接存于CPU的寄存器中,其特点是大大加快了运算速度,register变量只能是int型或char型,且存在个数限制(TC中为2个),因此register型变量多用来充当计数器变量使用。由于变量储存在寄存器中,所以无法对其进行地址操作,例如无法使用取地址运算符"&"求register变量的地址。顺便提一下,TC会自动把访问频繁的变量存入寄存器中(需将相关选项设为on)。
external型变量必须定义在所有函数的外部,为变量开辟存储空间。在函数中如果要访问这个变量,需要用extern进行声明。当然,如果external型变量定义在函数调用之前,extern可以省略。由于extern变量可以方便的随时调用,所以有人趋向于把大多数变量定义为extern型变量,但是extern变量总是存在于内存之中,不仅占用了大量的存储空间,而且变量数值容易在无意中被改变,引起不可预见性的错误,且使程序难于修改。
对于一些初学者来说,static变量可能比较难于理解,这里举个例子来说明static与auto的区别。例如定义变量a分别为static型和auto型,且设其值为1。"int x=1;"的含义是对变量赋初值,等价于下列两个语句"int x; x=1;",而"static int x=1;"的含义是说明一个static型变量并对其进行初始化,初始化是在程序执行之前,由编译程序一次性为变量赋的初值"x=1",而在实际运行时不再对变量进行赋值操作。
为了便于理解,特对四种存储变量总结如下:
四种存储变量的特征
性能
auto
extern
static
register
外部
内部
记忆能力
no
yes
yes
yes
no
多个函数共享
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)no
yes
yes
no
no
不同文件共享
no
yes
no
no
no
初始化赋值
random
0
0
0
random
作用域
当前函数
整个程序
当前文件
当前函数
当前函数
搞清楚了变量之后,对TC的基本介绍到此也算告一段落,如果您觉得本文确实为您学习TC提供了一些帮助的话,那么敬请您关注TC编程手册之二---函数和数组。