首先介绍Turbo C程序的基本组成部分; 然后介绍Turbo C的数据类型、变 (XeE2l2M
量类型、变量的初始化和赋值; 最后介绍Turbo C的有关操作。通过本节的学习,可 kr+D,h01
以对Turbo C语言有一个初步认识。 6tB+J F
E;,u2[3
1. Turbo C程序的一般组成部分 $g/SWq
t|a2;aq_
Turbo C 2.0 象其它语言一样按其规定的格式和提供的语句由用户编写应用程 8u"!dq
序。 请看下面一段Turbo C源程序。 例1: Vc_'hz]Z
!5.8]v
XJ;D=~
1s%#$ 7
/*Example program of Turbo C*/ Hx#;Z
#include /*包含文件说明*/ ?!;7:VIE
void lgc(void);/*子函数说明*/ ?/BqD;{?I
char answer;/*定义全程变量*/ wr5AG<%(
int main()/*主函数定义*/ +s(HOq)b
{ ?sab*$wG
char a;/*定义局部变量*/ &{ay=Mj
clrscr(); T29Dt
gotoxy(12,3); YX=a#%vrl
puts("Welcome to use Turbo C2.0!"); kv3E4,<9
gotoxy(15,13); ,ek_R)&[o
printf("--Exit"); D6%J\C13`
gotoxy(15,15); c0PIc^R(@
printf("--Continue"); |*:'TKzNS
while(1) mX_a^_[G
{ JM=JH
51`
a=getch(); GYJ80k|
if(a==27) MJOz.=CbhR
break; ;hYS6
if(a==13) 6;u$&&c(
{ 3
N.~mR
lgc(); |y&*MTfV4L
if(answer=='y'||answer=='Y') Z8zmHc"IH
{ _I:~@
gotoxy(23,14); e^d0zl{
puts("Please Write to the Company"); Ai:BEPKe
getch(); &Nj3h(Ll
break; @HQ`~C#Z'
} !>v2i"
} {wO3<9
} vu|n<
return(0);}void lgc(void){ ^c<ucv6.
clrscr(); wLmhy,
gotoxy(12,8); QcgRAo+u
printf("The Excellent Selection!"); *i]=f6G
gotoxy(21,12); GKOD/,
printf("Do you have any question?(Y/N)");
ugo.@
answer=getche();} b6}H$Sx~
mFg<dTx0c8
!+1<E*NQ S
Du`JaJI
由例子程序可以看出,Turbo C源程序主要有以下几个特点: Q o?O:
@{YS}&Q/
1. 程序一般用小写字母书写; `4(e
# ,7e
NM"
2. 大多数语句结尾必须要用";"作为终止符,否则Turbo C 不认为该语句 d`P7}*;`
结束; {6"Ph(I1
>ZPsjQuf"
3. 每个程序必须有一个而且只能有一个称作主函数的main()函数; )Gj8X}DM
PUF/#ck
4. 每个程序体(主函数和每个子函数,如上例中的main()函数和sub()函数)必须用一对花括号" _&N2'hG=sn
{"和"}"括起来; L$9.8W
=4[v3Qx
5. 一个较完整的程序大致包括:包含文件(一组#include<*.h>语句)、 \n{qsf:
用户函数说明部分、全程变量定义、主函数和若干子函数组成。在主函数和子函数 IOb*GTb
中又包括局部变量定义、 若干个Turbo C库函数、控制流程语句、用户函数的调用 :E_g"_
语句等; z*kutZ:6Y
9^,Lc1"M>
x97
j
6. 注释部分包含在"/*"和"*/"之间,在编译时它被Turbo C编译器忽略。 x$IX5:E#e
bLe<G
说明: ,8:(OB|a
>_o}
&QDW9
Mi
1. 象其它一些语言一样,Turbo C的变量在使用之前必须先定义其数据类 E_k$W5
型,未经定义的变量不能使用。定义变量类型应在可执行语句前面,如上例main()函 'SCidN(n
数中的第一条语句就是变量定义语句,它必须放在第一各执行语句clrscr()前面。 #bMuvaP~
|UK}
7[I}*3Q'
2. 4kG,*3&2
在Turbo C中, 大、小写字母是有区别的,相同字母的大、小写代表不同的变量。 :,Pn3xl
y=`2\L" O
3. h!&prYx
Turbo C程序的书写格式非常灵活,没有严格限制。 {U!8|(
wT `a3Ymm
例1的主函数可写成: Q7R~{5r>W
j<u@j+V
vg
D77
main(){char c;clrscr();gotoxy(12,3); OlAs'TE^
puts("Welcome to use Turbo C2.0!");gotoxy(15,13); Q?3Gk%T0[
printf("--Continue");gotoxy(15,15);...} Qk\A
c
5"HVBfFk
?*E'^~,H)
这样写语法上没有错误,但阅 ]Bm/eRy"
读起来不方便, 同时也使得程序层次不明确。 Pdt6nzfr
^SxY IFL
&GlwC%$S
作者建议用Turbo C编程时,一行一条 U4gF(Q
语句,遇到嵌套语句向后缩进,必要时对程序加上注释行。这样可以便程序结构清楚、 _{r=.W+w
易于阅读、维护和修改。通过以上介绍,可以得出Turbo C源程序的一般形式为: @c<3b2
包含文件 LUuZ9$t0J"
子函数类型说明 V>ieh2G(
全程变量定义 'f[T&o&L/
main() &$]vh
{ zRq-b`<7V
局部变量定义 L1ieaKw
<程序体> 2C/$Ei^t
} /h*>P:i].
sub1() P^w#S
{ v1%uxthW
局部变量定义 kB'Fkqwm
<程序体> Eve.QAl|
} mMb'@
sub2() UG)8D5
{ QS{1CC9$
局部变量定义 TYJ:!
<程序体> 3~}uqaGt
} T{Sb^-H#X
. /RHo1
. /[Z,MG
. GG@md_
subN() )=AHf?hn
{ b!sRk@LGZ
局部变量定义 2_zp:v
<程序体> }RHn)}+
} LUC4=kk4
^j".
其中sub1() ,...,subN()代表用户定义的子函数,程序体指Turbo C 2.0提供的 L5#P[cHzz
任何库函数调用语句、控制流程语句或其它用子函数调用语句等。 E_8\f_%wK
blTo5NLX
1E73i_L
2. 数据类型 ^go7_y
:E>HE,1b+
在Turbo C语言中, 每个变量在使用之前必须定义其数据类型。Turbo C有以下 COW}o~3-4
几种类型:整型(int)、浮点型(float)、字符型(char)、指针型(*)、无值型(void) "\}@gV#r$A
以及结构(struct)和联合(union)。其中前五种是Turbo C的基本数据类型、后两种 xER\ZpA:,
数据类型(结构和联合)将在第五章介绍。 rb1`UG"h$
*d"DA[(
2.1 整型(int) e pU:
))&;}2{
一、整型数说明 m|=H#
q{t*34R
NX|v=
加上不同的修饰符,整型数有以下几种类型; [k6nW:C
d/bEt&
signed short int 有符号短整型数说明。简写为short或int,字长为2 mnmP<<8C,
=$nB/K,8AX
字节共16位二进制数,数的范围是-32768~32767。 .G+Pe'4a
M@?xa/E64
signed long int 有符号长整型数说明。简写为long,字长为4字节共 \/1<E?Q
f
32位二进制数,数的范围是-2147483648~2147483647。 Td G!&:>
unsigned short int 无符号短整型数说明。简写为unsigned int,字长 /c2w/+ _
为2字节共16位二进制数,数的范围是0~65535。 d4nH_?
unsigned long int 无符号长整型数说明。简写为unsigned long,字长 L
]w/P|
为4字节共32位二进制数,数的范围是0~4294967295。 GDD '[;
.h9l7
nZt
二、整型变量定义
9A,^c;
czm&~n6$
'B@e8S)y
可以用下列语句定义整型变量 Y]L9Y9
int a,b;/*a、b被定义为有符号短整型变量*/ iVG-_RsKK
unsigned long c;/*c被定义为无符号长整型变量*/ ^my].Qpt
*cC_j*1@
三、整型常数表示 qUxRM_7U
=:/BV=tv
按不同的进制区分,整型常数有三种表示方法: !"<MsoY@
十进制数:以非0开始的数 `67[O4$<
如:220,-560,45900 6IWxPt~
八进制数:以0开始的数 {%IE xPJ
如:06;0106,05788 ,:??P1
十六进制数:以0X或0x开始的数 /)dFK~
如:0X0D,0XFF,0x4e >2]JXLq
另外, 可在整型常数后添加一个"L"或"l"字母表示该数为长整型数, 如22L, 'A:x/iv}^
0773L,0Xae4l。 %K>.lh@
[o.B
2.2 浮点型(float) 3bDQk
:L
一、浮点数说明 Fd#m<"
cOPB2\,
"dI;
Turbo C中有以下两种类型的浮点数: Sr%;fq
float 单浮点数。字长为4 个字节共32 位二进制数,数的范围是 }S3qBQTYL
3.4x10-38E~3.4x10+38E。 Er{#ziN+
double 双浮点数。字长为 8个字节共 64 位二进制数,数的范围是 \[jq4`\$
1.7x10-308E~1.7x10+308E。 D5:{fWVsV/
7}vg.hmZ
s%2v3eb
说明: L3n_ 5|
浮点数均为有符号浮点数,没有无符号浮点数。 *&d<yJM`b
(ZY@$''
二、浮点型变量定义 V^\8BVw
[-)r5Dsdq
i} N8(B(
可以用下列语句定义浮点型变量: HO[wTB|D]
float a,f;/*a,f被定义为单浮点型变量*/ rtL}W__
double b;/*b被定义为双浮点型变量*/ .N*Pl(<[
VMCLHpSfW
三、浮点常数表示 lhtZaU~V
c wOJy>
$*kxTiG!7
例如:+29.56,-56.33,-6.8e-18,6.365 I(9R~q
说明: "h|'}7p
1. 浮点常数只有一种进制(十进制)。 {'AWZ(
2. 所有浮点常数都被默认为double。 ;q:jl~
3. 绝对值小于1的浮点数, 其小数点前面的零可以省略。如:0.22可写为.22,- ?gwUwOV"
0.0015E-3可写为-.0015E-3。 jaa"~5TO8
4. Turbo C默认格式输出浮点数时,最多只保留小数点后六位。 \TF!S"V
x3u4v~ "-
2.3 字符型(char) XXh6^@H=
6<' 21
8P"_#M?!
加上不同的修饰符,可以定义有符号和无符号两种类型的字符型变量,例如: h68]=KyK
char a:/*a被定义为有符号字符变量*/ .58qL-iC
unsigned char l;/*l被定义为无符号字符变量*/ 4WE6fJ2X
字符在计算机中以其ASCII码方式表示,其长度为1个字节,有符号字符型数取值 gt/zpiKmV
范围为-128~127,无符号字符型数到值范围是0~255。因此在Turbo C语言中,字符型 ;L,mBQB?0b
数据在操作时将按整型数处理,如果某个变量定义成char,则表明该变量是有符号的, fPrLM'
即它将转换成有符号的整型数。 &`fhEN
Turbo C中规定对ASCII码值大于0x80的字符将被认为是负数。例如ASCII 值为 {&"L~>/o
0x8c的字符,定义成char时,被转换成十六进制的整数0xff8c 。这是因当ASCII码值 QjC22lW-
大于0x80时,该字节的最高位为1,计算机会认为该数为负数,对于0x8c表示的数实际 tOOchu?=
上是-74(8c的各位取反再加1) ,而-74 转换成两字节整型数并在计算机中表示时就 iC*F
是0xff8c( 对0074 各位取反再加1) 。因此只有定义为unsigned char 0x8c转换成 #^4,GLIM
整型数时才是8c。这一点在处理大于0x80的ASCII码字符时(例如汉字码) 要特别注 Vur bW=~g
意。一般汉字均定义为unsigned char(在以后的程序中会经常碰到)。 NHl|x4Zpw
另外,也可以定义一个字符型数组(关于数组后面再作详细介绍),此时该数组表 =b[_@zq]
示一个字符串。 TARXx>
V~
TWKuR
ki{3IEOr}
例如: ,:%"-`a%
char str[10]; )
/v6l
计算机在编译时, 将留出连续10个字符的空间,即str[0]到str[9]共10个变量, >y}M.Mm
但只有前9个供用户使用。第10个str[9]用来存放字符串终止符NULL即"\0",但终止 MCT'Nw@A
符是编编译程序自动加上的,这一点应特别注意。 qVdwfT{1J
B}eA\O4}I
二、字符常数表示 _ z;q9&J)
能用符号表示的字符可直接用单引号括起来表示, 如'a','9','Z',也可用该字 -_<}$9lz
符的ASCII码值表示,例如十进制数85表示大写字母'U',十六进制数0x5d表示']',八 |Xw/E)jA
进制数0102表示大写字母'B'。 &<+ A((/i
一些不能用符号表示的控制符,只能用ASCII码值来表示,如十进制数10 表示换 3mSXWl^?
行,下六进制数0x0d表示回车,八进制数033表示Esc。Turbo C2.0中也有另外一种表 &EM\CjKv"
示表示方法,如'\033'表示Esc,这里'\ 0' 符号后面的数字表示十六进制的ASCII值 (D
9Su^:1
当然这种表示方法也适用于可睦接用符号表示的字符。 @rHK(25+d
另外,Turbo C2.0中有些常用的字符用以下特殊规定来表示: YhRWz=l
规定符 等价于 含义 /5#rADOS
HBY.DCN[Z
2 QNNp:`6
J-ePE7i
'\f' '\X0C' 换页 o=RM-tR`v
'\r' '\X0D' 回车 T2D<UhP
'\t' '\X09' 制表键 'oN\hy($,h
'\n' '\X0A' 换行 2>\v*adG
'\\' '\X5C' \符 }/,HM9Ke
'\'' '\X27' '符 6&!&\
'\"' '\X22' "符 n 3lE,b
?X-)J=XG
对于字符串常量,一般用双引号括起来表示,如"Hello Turbo C2.0"。 kvh&d|
.c#y%S
)~V4+*<
X{^}\,cVtG
2.4 指针型(*) ~Aq5XI%i
指针是一种特殊的数据类型,在其它语言中一般没有。指针是指向变量的地址, 720)VzT
实质上指针就是存贮单元的地址。根据所指的变量类型不同,可以是整型指针(int*)、 \@>b;4Fb+N
浮点型指针(float *) 、字符型指针(char *) 、结构指针(struct *) 和联合指针 7 t?*
(union *)(结构指针和联合指针将在第4节中介绍)。 (n1Bh~R^
0I{gJSK.,
xP=/N!,#
](B@5-^
2.5 无值型(void) $O{duJU
@vMA=v7a
无值型字节长度为0,主要有两个用途:一是明确地表示一个函数不返回任何值; kqb0>rYa
一是产生一个同一类型指针(可根据需要动态分配给其内存)。 O8]'o*<]
例如: 4G@nZn
void *buffer;/*buffer被定义为无值型指针*/ \j2;4O?`
h b/]8mR
X]loJoM9
3 关键字和标识符 | ea~'N1
7?v#'Ies
3.1 关键字 2qi'g:qe
所谓关键字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字。例如关 f,z P*
键字不能用作变量名、函数名等。 SSBg?H 'T
Turbo C2.0有以下关键字: ?+c`]gO7N
Turbo C2.0扩展的共11个 UA~RK2k?
%Rh;=p`
-AYA~O(&
asm _cs _ds _es _ss cdecl @h?shW=^
far near huge interrupt pascal "C?5f]T
F/1#l@qN
由ANSI标准定义的共32个 ?%O3Oi Xz
auto double int struct break else j$da8] !
long QR">.k4QJ
switch L'i-fM[#
case pr,p=4m{\
enum $^ 'aCU0C
register $DBGLmw
typedef @FN*TJ
char ~dHM4lGY
extern |BZDhd9<{
return WS2osBc
union \tyg(srw0
d/74{.
const ySbqnw'
float W2;N<[wa<u
short f&4,?E;6%
unsigned
LzDI0a.
continue ];+#i"l
for 65,(4Udz!
signed J
wm T/
void '<iK*[NW
default qEUT90
goto ._z'g_c(
sizeof P%Ay3cR+E
volatile i77GE
do YYg)
if ~Cc.cce5
while T88Y
qI
static