C语⾔变量类型和表⽰⽅法
⼀、变量
(⼀)、变量类型和表⽰⽅法
1.什么是变量?⼀句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、⼩数(浮点数)、字符等等,那么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体分类。整型变量还可具体分为⽆符号型、长整型和短整型。浮点型也可分为单精度型、双精度型和长双精度型。此外还可以分为静态变量、外部变量、寄存器变量和⾃动存储变量。这些数据类型我们在本节和后⾯的章节中都会陆陆续续介绍。
那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。
标识符的命名有⼀定的规则:
(1).标识符只能由字母、数字和下划线三类字符组成
(2).第⼀个字符必须是字母(第⼀个字符也可以是下划线,但被视作系统⾃定义的标识符)
(3).⼤写字母和⼩写字母被认为是两个不同的字符,如A和a是两个不同的标识符
(4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总成的,⽽不是C语⾔本⾝的局限性
(5).标识符不能是C的关键字
2.从上⾯的规则中,有个关键字的概念。那么什么叫关键字呢?
从表⾯字意上也可以看出,关键字是C语⾔本⾝某些特性的⼀个表⽰,是唯⼀的代表某⼀个意思的。
下⾯列出ANSI标准定义的32个C语⾔的关键字,这些关键字在以后的学习中基本上都会⽤到,到时再说它们的各⾃⽤法。
auto break case char const continue default
do double else enum extern float for
goto if int long register return short
signed sizeof static struct switch typedef
union unsigned void volatile while
C语⾔还包括⼀些不能⽤做标识符的扩展关键字。
asm cdecl _cs _ds _es far
huge interrupt near pascal _ss
所以在以后的学习中,在给变量命名时要避开这些关键字。
3. Turbo C2.0规定所有变量在使⽤前都必须加以说明。⼀条变量说明语句由数据类型和其后的⼀个或多个变量名组成。变量说明的形式如下:
类型 <;变量表>;
这⾥类型是指Turbo C2.0的有效数据类型。变量表是⼀个或多个标识符名,每个标识符之间⽤,分隔。
(⼆)、整型变量
整型变量是⽤来存储整数的。
整型变量⼜可具体分为好⼏种,最基本的整型变量是⽤类型说明符int声明的符号整型,形式如下:
int Counter;
这⾥int是类型说明符,Counter是变量的名字。
整型变量可以是有符号型、⽆符号型、长型、短型或象上⾯定义的普通符号整型。
整型是16位的,长整型是32位,短整型等价于整型。
以下是⼏种整型变量的声明⽰例:
long int Amount; /*长整型*/
long Amount; /*长整型,等价于上⾯*/
signed int Total; /*有符号整型*/
signed Total; /*有符号整型,等价于上⾯*/
unsigned int Offset; /*⽆符号整型*/
unsigned Offset; /*⽆符号整型,等价于上⾯*/
short int SmallAmt; /*短整型*/
short SmallAmt; /*短整型,等价于上⾯*/
unsigned short int Month; /*⽆符号短整型*/
unsigned short Month; /*⽆符号短整型,等价于上⾯*/
从上⾯的⽰例可以看出,当定义长整型、短整型、符号整型或⽆符号整型时,可以省略关键字int。
注明:
1.⽤signed对整型变量进⾏有符号指定是多余的,因为除⾮⽤unsigned指定为⽆符号型,否则整型都是有符号的。
2.当⼀个变量有⼏重特性时,声明关键字的顺序可以任意。以下⼏种声明是等价的:unsigned long T1;
long unsigned T2;
unsigned long int T3;
unsigned int long T4;
long unsigned int T5;
long int unsigned T6;
int unsigned long T7;
int long unsigned T8;
(三)、浮点类型变量
顾名思义,浮点类型变量是⽤来存储带有⼩数的实数的。
C语⾔中有三种不同的浮点类型,以下是对这三种不同类型的声明⽰例:
float Amount; /*单精度型*/
double BigAmount; /*双精度型*/
long double ReallyBigAmount; /*长双精度型*/
这⾥Amount,BigAmount,ReallyBigAmount都是变量名。
浮点型都是有符号的。
(四)、字符型变量
字符型变量中所存放的字符是计算机字符集中的字符。对于PC机上运⾏的C系统,字符型数据⽤8位单字节的ASCII码表⽰。程序⽤类型说明符char来声明字符型变量:
char ch;
这条声明语句声明了⼀个字符型变量,标识符为ch。当以这种形式声明变量之后,程序可以在表达式中引⽤这个变量,关于
语句和表达式的知识在后⾯将会介绍。
字符数据类型事实上是8位的整型数据类型,可以⽤于数值表达式中,与其他的整型数据同样使⽤。在这种情况下,字符型变量可以是有符号的,也可以是⽆符号的。对于⽆符号的字符型变量可以声明为:
unsigned char ch;
除⾮声明为⽆符号型,否则在算术运算和⽐较运算中,字符型变量⼀般作为8位有符号整型变量处理。
还有其他的如指针型变量,void型变量,以后再介绍。
⼆、常量
常量的意思就是不可改变的量,是⼀个常数。同变量⼀样,常量也分为整型常量、浮点型常量、字符型常量,还有字符串常量、转义字符常量和地址常量。
(⼀)、整型常量
整型常量可以是长整型、短整型、有符号型、⽆符号型。在Tubbo C 2.0⾥有符号整型常量的范围从-32768到32767,⽆符号整型的为0到65535;有符号长整型的范围为-2147483648到2147483647。⽆符号长整型的范围为0到4294967295。短整型同字符型。
可以指定⼀个整型常量为⼆进制、⼋进制或⼗六进制,如以下语句:
-129, 0x12fe, 0177
常量的前⾯有符号0x,这个符号表⽰该常量是⼗六进制表⽰。如果前⾯的符号只有⼀个字母0,那么表⽰该常量是⼋进制。
有时我们在常量的后⾯加上符号L或者U,来表⽰该常量是长整型或者⽆符号整型:
22388L, 0x4efb2L, 40000U
后缀可以是⼤写,也可以是⼩写。
(⼆)、浮点型常量
⼀个浮点型常量由整数和⼩数两部分构成,中间⽤⼗进制的⼩数点隔开。有些浮点树⾮常⼤或者⾮常⼩,⽤普通⽅法不容易表⽰,可以⽤科学计数法或者指数⽅法表⽰。下⾯是⼀个实例:
3.1416, 1.234E-30, 2.47E201
注意在C语⾔中,数的⼤⼩也有⼀定的限制。对于float型浮点数,数的表⽰范围为-3.402823E38到3.402823E38,其中-
1.401298E-45到1.401298E-45不可见。double型浮点型常数的表⽰范围为-1.79E308到1.79E308,其中-4.94E-324到4.94E-324不可见。
在浮点型常量⾥我们也可以加上后缀。
FloatNumber=1.6E10F; /*有符号浮点型*/
LongDoubleNumber=3.45L; /*长双精度型*/
后缀可⼤写也可⼩写。
说明:
1. 浮点常数只有⼀种进制(⼗进制)。
2. 所有浮点常数都被默认为double。
3. 绝对值⼩于1的浮点数, 其⼩数点前⾯的零可以省略。如:0.22可写为.22, -0.0015E-3可写为-.0015E-3。
4. Turbo C默认格式输出浮点数时, 最多只保留⼩数点后六位
(三)、字符型常量
字符型常量所表⽰的值是字符型变量所能包含的值。我们可以⽤ASCII表达式来表⽰⼀个字符型常量,或者⽤单引号内加反斜杠表⽰转义字符。
'A', '\x2f', '\013';
其中:\x表⽰后⾯的字符是⼗六进制数,\0表⽰后⾯的字符是⼋进制数。
注意:在Turbo C 2.0中,字符型常量表⽰数的范围是-128到127,除⾮你把它声明为unsigned,这样就是0到255。
(四)、字符串常量
字符串常量就是⼀串字符,⽤双引号括起来表⽰。
Hello,World!
\nEnter selection:
\aError
(五)、转义字符
上⾯我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要⽤特殊的⽅式进⾏处理。下⾯给出所有的转义字符和所对应的意义:
转义字符描述
\' 单引号
\ 双引号
\\ 反斜杠
\0 空字符
\0nnn ⼋进制数
\a 声⾳符
\b 退格符
\f 换页符
\n 换⾏符
\r 回车符
\t ⽔平制表符
\v 垂直制表符
float型
\x ⼗六进制符
它们的具体⽤法我们到讲输出语句时再介绍。
(六)、地址常量
我们前⾯说的变量是存储数据的空间,它们在内存⾥都有对应的地址。在C语⾔⾥可以⽤地址常量来引⽤这些地址,如下:
&Counter, &Sum
&是取地址符,作⽤是取出变量(或者函数)的地址。在后⾯的输⼊语句和指针⾥还会说明。这⼀节所讲到的变量和常量知识可以说是在⼀切程序中都要⽤到,特别是变量的声明和命名规则。