首先介绍Turbo C程序的基本组成部分; 然后介绍Turbo C的数据类型、变 \dyJ=tg
量类型、变量的初始化和赋值; 最后介绍Turbo C的有关操作。通过本节的学习,可 ;&2J9
以对Turbo C语言有一个初步认识。 5Rv6+d
s!\uR.
1. Turbo C程序的一般组成部分 U _~lpu
73$^y)AvY
Turbo C 2.0 象其它语言一样按其规定的格式和提供的语句由用户编写应用程 4:\s.Z{!3
序。 请看下面一段Turbo C源程序。 例1: r( _9_%[
Gy9+-7"V
UTEUVcJ\
w_po5[]R
/*Example program of Turbo C*/ |kvom 4 T
#include /*包含文件说明*/ |bQX9|L
void lgc(void);/*子函数说明*/ ,x| 4nk_
char answer;/*定义全程变量*/ m6BIQ(l
int main()/*主函数定义*/ ~q]+\qty4
{ z6)SaSYE
char a;/*定义局部变量*/ r\y~
:
clrscr(); oYNP,8r^
gotoxy(12,3); u>Z0ug6x
puts("Welcome to use Turbo C2.0!"); Epm\=s
gotoxy(15,13); 3~"G(UP
printf("--Exit"); c9\jELO
gotoxy(15,15); zcGeXX}V?
printf("--Continue"); k
zhek >
while(1) x+zz:^yHYf
{ .*u, !1u
a=getch(); nXDU8|"
if(a==27) AZ)H/#be
break; @[0zZX2EE
if(a==13) m~ %\f8w-x
{ p=U*4[9k
lgc(); ;z;O}<8s
if(answer=='y'||answer=='Y') i,R<`K0
{ Kk2PWJ7
gotoxy(23,14); X>w(^L*>
puts("Please Write to the Company"); L]L-000D(
getch(); -LL49P6
break; \|Pp%U [
} ]/!#:
} jX^uNmb
} ^[}^+
return(0);}void lgc(void){ UY*3b<F}
clrscr(); +K4d(!Sb
gotoxy(12,8); *%L:soM'Ll
printf("The Excellent Selection!"); Z 6^AO=3
gotoxy(21,12); =[!&&,c=
printf("Do you have any question?(Y/N)"); !/G2vF"
answer=getche();} dxkq*
jnvi_Rodm
vn@9Sqk
SMVn2H@
由例子程序可以看出,Turbo C源程序主要有以下几个特点: B&&:A4
^PIUA'
1. 程序一般用小写字母书写; @b\/\\{
YaJ[39V
2. 大多数语句结尾必须要用";"作为终止符,否则Turbo C 不认为该语句 ^)Xl7d|m+
结束; ~:r:?PwWG
OD!b*Iy|
3. 每个程序必须有一个而且只能有一个称作主函数的main()函数; 4y&%YLMpl
!|{T>yy
4. 每个程序体(主函数和每个子函数,如上例中的main()函数和sub()函数)必须用一对花括号" 6q
._8%
{"和"}"括起来; ${^WM}N
w-l:* EV8
5. 一个较完整的程序大致包括:包含文件(一组#include<*.h>语句)、 yTWP1
用户函数说明部分、全程变量定义、主函数和若干子函数组成。在主函数和子函数 c%_I|h<?iT
中又包括局部变量定义、 若干个Turbo C库函数、控制流程语句、用户函数的调用 UD`bK a`E
语句等; RiC1lCE
g+oSbC
4S>A}rWz
6. 注释部分包含在"/*"和"*/"之间,在编译时它被Turbo C编译器忽略。 _p/
_t76s
GGcNaW'
说明: 6@?4z
Rkz
h.@5vhD
Q?KWiFA}'
1. 象其它一些语言一样,Turbo C的变量在使用之前必须先定义其数据类 L.XGD|m
型,未经定义的变量不能使用。定义变量类型应在可执行语句前面,如上例main()函 x5vvY
数中的第一条语句就是变量定义语句,它必须放在第一各执行语句clrscr()前面。 >%k:++b{
p`lv$ @q'
uh'{+E;=
2. ]NS{q85
在Turbo C中, 大、小写字母是有区别的,相同字母的大、小写代表不同的变量。 !E<y:$eH:
e;9Z/);#s
3. }p 0\
Turbo C程序的书写格式非常灵活,没有严格限制。 To1 .U)do
B2QttcJ
例1的主函数可写成: LIYj__4=|
r9<OB`)3+
45e-A{G~
main(){char c;clrscr();gotoxy(12,3); n}(/>?/
puts("Welcome to use Turbo C2.0!");gotoxy(15,13); ]ovP^]]V
printf("--Continue");gotoxy(15,15);...} L=4%MyZ.e
{fe[$KQ
<eP`Lu"
这样写语法上没有错误,但阅 9frLYJz"
读起来不方便, 同时也使得程序层次不明确。 >ENZ['F
XlPq>@4p
e ?FjN 9
作者建议用Turbo C编程时,一行一条 33dHTV
语句,遇到嵌套语句向后缩进,必要时对程序加上注释行。这样可以便程序结构清楚、 t'Zq>y;yg
易于阅读、维护和修改。通过以上介绍,可以得出Turbo C源程序的一般形式为: wlk{V
包含文件 mm(Ff >O
子函数类型说明 ^6R?UG;6
全程变量定义 ?-w<H!Y7
main() UfcQFT{()
{ qScc~i Oq
局部变量定义 9<BC6M_/
<程序体> NuZiLtC
} ;oW#>!HrY
sub1() *@`Sx'5!
{ : p# 5nYi
局部变量定义 ' jAX&7G`
<程序体> P%w)*);
} J{fTx@?(
sub2() -?L~\WJAL
{ A)"?GK{*
局部变量定义 KwO;ICdJ
<程序体> jd]Om
r!
} J?VMQTa/+
. /U\k<\1~m
. Fq\vFt|m<
. S"+X+Oxp7?
subN() Yxik.S+G
{ 2wR?ON=Q
局部变量定义 BZHba8c(
<程序体> )5n*4A
} V0 70oZ
yOHVL~F
其中sub1() ,...,subN()代表用户定义的子函数,程序体指Turbo C 2.0提供的 s6=jHrdvv
任何库函数调用语句、控制流程语句或其它用子函数调用语句等。 GH ]c
oPP`)b$x
G`1!SEae
2. 数据类型 ~jcdnm]
M&au A
在Turbo C语言中, 每个变量在使用之前必须定义其数据类型。Turbo C有以下 Z!HQ|')N5
几种类型:整型(int)、浮点型(float)、字符型(char)、指针型(*)、无值型(void) H,8HGL[l
以及结构(struct)和联合(union)。其中前五种是Turbo C的基本数据类型、后两种
X0a)6HZ{
数据类型(结构和联合)将在第五章介绍。 "m2g"xa\7
?r
P'PUB
2.1 整型(int) _{$eOwB
r"HQ>Wn
一、整型数说明 "u29| OY
pjG/`
(%p@G5GU
加上不同的修饰符,整型数有以下几种类型; f_\,H|zco)
w)xiiO[
signed short int 有符号短整型数说明。简写为short或int,字长为2 L>xecep
FFC"rG
字节共16位二进制数,数的范围是-32768~32767。 ,j3Yvn W
>~_oSC)E
signed long int 有符号长整型数说明。简写为long,字长为4字节共 j_]#Ew\q
32位二进制数,数的范围是-2147483648~2147483647。 r xlKoa
unsigned short int 无符号短整型数说明。简写为unsigned int,字长 GnT Cq_\
为2字节共16位二进制数,数的范围是0~65535。 )>-94xx|
unsigned long int 无符号长整型数说明。简写为unsigned long,字长 D1G9^7:^E
为4字节共32位二进制数,数的范围是0~4294967295。 wz[Xay9jW
ZQ@Ul
二、整型变量定义 :{7gZ+*
4^*+G]]wZ~
BOc2<M/\
可以用下列语句定义整型变量 e'nhP
int a,b;/*a、b被定义为有符号短整型变量*/ /i:c!l9
unsigned long c;/*c被定义为无符号长整型变量*/ a ][t#`
!i4/#H
三、整型常数表示 Lp1\vfU<+
I(rZ(|^A
按不同的进制区分,整型常数有三种表示方法: +g.lLb*#
十进制数:以非0开始的数 *I)F5M
如:220,-560,45900 <D}yqq@|
八进制数:以0开始的数 |FED<
如:06;0106,05788 4eD>DW
十六进制数:以0X或0x开始的数 =[_=y=G
如:0X0D,0XFF,0x4e qS|ns'[
另外, 可在整型常数后添加一个"L"或"l"字母表示该数为长整型数, 如22L, 5`>%{ o
0773L,0Xae4l。 rl/]Ym4j
_|^cudRv
2.2 浮点型(float) a+!r5689
一、浮点数说明 LZ'Y3 *
n^[VN[VC
X}fu $2
Turbo C中有以下两种类型的浮点数: :<QmG3F
float 单浮点数。字长为4 个字节共32 位二进制数,数的范围是 a8w/#!^34
3.4x10-38E~3.4x10+38E。 "A9qC*6[
double 双浮点数。字长为 8个字节共 64 位二进制数,数的范围是 j'IZ etT
1.7x10-308E~1.7x10+308E。 sa?Ul)L2
>U7{EfUJdx
q0t}
说明: Ea<kc[Q
浮点数均为有符号浮点数,没有无符号浮点数。 9_Ws8nE
,SV34+(
二、浮点型变量定义 FTJvkcc?m
]K0G!T R<
BmhIKXE{*
可以用下列语句定义浮点型变量: _48@o^{
float a,f;/*a,f被定义为单浮点型变量*/ YP4lizs.
double b;/*b被定义为双浮点型变量*/ hBRcI0R
fk5$z0 /
三、浮点常数表示 "h\ (a<
Bx" eX>A8
JmBe1"hs
例如:+29.56,-56.33,-6.8e-18,6.365 DnP
"7}v
说明: HSG7jC'_
1. 浮点常数只有一种进制(十进制)。 wdMVy=SS
2. 所有浮点常数都被默认为double。 OAiSE`
3. 绝对值小于1的浮点数, 其小数点前面的零可以省略。如:0.22可写为.22,- v$d^>+Y#
0.0015E-3可写为-.0015E-3。 `z1E]{A
4. Turbo C默认格式输出浮点数时,最多只保留小数点后六位。 -]~KQvIH!
*S= c0
2.3 字符型(char) VRQD
hVGK%HCz&
c,L{Qv"n{
加上不同的修饰符,可以定义有符号和无符号两种类型的字符型变量,例如: Ljs4^vy<J
char a:/*a被定义为有符号字符变量*/ v!WkPvU
unsigned char l;/*l被定义为无符号字符变量*/ _C4N6YdU
字符在计算机中以其ASCII码方式表示,其长度为1个字节,有符号字符型数取值 |!6<L_31%
范围为-128~127,无符号字符型数到值范围是0~255。因此在Turbo C语言中,字符型 .~AQxsGH
数据在操作时将按整型数处理,如果某个变量定义成char,则表明该变量是有符号的, Fi8#r)G.
即它将转换成有符号的整型数。 T*1 `MIkv
Turbo C中规定对ASCII码值大于0x80的字符将被认为是负数。例如ASCII 值为 (k$KUP
0x8c的字符,定义成char时,被转换成十六进制的整数0xff8c 。这是因当ASCII码值 7*>(C*q=
大于0x80时,该字节的最高位为1,计算机会认为该数为负数,对于0x8c表示的数实际
=yCz!vc
上是-74(8c的各位取反再加1) ,而-74 转换成两字节整型数并在计算机中表示时就 ]!'}{[1}
是0xff8c( 对0074 各位取反再加1) 。因此只有定义为unsigned char 0x8c转换成 Nc_Qd4<[@G
整型数时才是8c。这一点在处理大于0x80的ASCII码字符时(例如汉字码) 要特别注 v/G)E_
意。一般汉字均定义为unsigned char(在以后的程序中会经常碰到)。 jccSjGX@w
另外,也可以定义一个字符型数组(关于数组后面再作详细介绍),此时该数组表 "lnI@t{o
示一个字符串。 ]w/%>
g;-6Hg'
I&Z+FL&@f
例如: =IEei{
char str[10]; XGcl9FaO}
计算机在编译时, 将留出连续10个字符的空间,即str[0]到str[9]共10个变量, w|[{xn^R
但只有前9个供用户使用。第10个str[9]用来存放字符串终止符NULL即"\0",但终止 LXq0hI
符是编编译程序自动加上的,这一点应特别注意。 P
~rT uj
=u<jxV9
二、字符常数表示 q]rqFP0C
能用符号表示的字符可直接用单引号括起来表示, 如'a','9','Z',也可用该字 p%#=OtkC
符的ASCII码值表示,例如十进制数85表示大写字母'U',十六进制数0x5d表示']',八 ZxoAf;U~
进制数0102表示大写字母'B'。 AYHefAF<w
一些不能用符号表示的控制符,只能用ASCII码值来表示,如十进制数10 表示换 VlFhfOR6t
行,下六进制数0x0d表示回车,八进制数033表示Esc。Turbo C2.0中也有另外一种表 3R?6{.
示表示方法,如'\033'表示Esc,这里'\ 0' 符号后面的数字表示十六进制的ASCII值 p/ au.mc
当然这种表示方法也适用于可睦接用符号表示的字符。 r"$~Gg.%(
另外,Turbo C2.0中有些常用的字符用以下特殊规定来表示: kJNu2S
规定符 等价于 含义 c.{t +OR
,cFBLj(@
YF$nL(
zL=PxFw0
'\f' '\X0C' 换页 ,/Al'
'\r' '\X0D' 回车 7*C>4Gs
'\t' '\X09' 制表键 W%P$$x5&
'\n' '\X0A' 换行 <7*d2
'\\' '\X5C' \符 W{X5~w(
'\'' '\X27' '符 cL+bMM$4r~
'\"' '\X22' "符 C+vk9:"
8T"8C
对于字符串常量,一般用双引号括起来表示,如"Hello Turbo C2.0"。 EY}*}- 3
Z@gEJ^"yA"
(Y~gItej
|0$7{nQ
2.4 指针型(*) `7
3I}%?
指针是一种特殊的数据类型,在其它语言中一般没有。指针是指向变量的地址, hwi$:[
实质上指针就是存贮单元的地址。根据所指的变量类型不同,可以是整型指针(int*)、 xz*MFoE
浮点型指针(float *) 、字符型指针(char *) 、结构指针(struct *) 和联合指针 nq 9{{oe
(union *)(结构指针和联合指针将在第4节中介绍)。 <o: O<p@6
owe6ge7m
Q60'5Wt
Q7pjF`wu
2.5 无值型(void) d37|o3oC
r68d\N`.
无值型字节长度为0,主要有两个用途:一是明确地表示一个函数不返回任何值; cIQe^C
一是产生一个同一类型指针(可根据需要动态分配给其内存)。 3Bbd2[<W
例如: ?X nKKw\
void *buffer;/*buffer被定义为无值型指针*/ UI_u:a9Q/
`2a7y]?
0I7 r{T
3 关键字和标识符 cL^r^kL("
I`uOsZBO/
3.1 关键字 _5H0<%\
所谓关键字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字。例如关 UE 1tm
键字不能用作变量名、函数名等。 3)3$ L
Turbo C2.0有以下关键字: :89AYqT"
Turbo C2.0扩展的共11个 Rd,5&X$
KOit7+Q
b>'y[P!
asm _cs _ds _es _ss cdecl _qjkiKm?1F
far near huge interrupt pascal NU(YllPB
j%Wip j;c
由ANSI标准定义的共32个 LLd5Z44v
auto double int struct break else zc&i 4K
long (3QG
switch HC>MCwx=r
case P$Fq62;}r4
enum 7"p%c`*;
register Y~P*
!g
typedef [_1K1i"m
char li
extern `Oe"s_O#
return A ^X 1
union H'x)[2
Q)93+1]
const [zr2\(
float `c'R42SA
short P|rreSv*
unsigned ;, ^AR{+x
continue IZ&FNOSZ+4
for FSHC\8siS
signed a
n|bzG
void N6w!V]b
default i?]`9 z
goto }q=uI`
sizeof (dQsR sA
volatile ]<:qMLg
do fea4Ul{ib
if A*TO0L
while :nn(Ndlz9
static