一、变量(一)、变量类型和表示方法1.什么是变量?一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体分类。整型变量还可具体分为无符号型、长整型和短整型。浮点型也可分为单精度型、双精度型和长双精度型。此外还可以分为静态变量、外部变量、寄存器变量和自动存储变量。这些数据类型我们在本节和后面的章节中都会陆陆续续介绍。那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。标识符的命名有一定的规则:(1).标识符只能由字母、数字和下划线三类字符组成(2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符)(3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符(4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总成的,而不是C语言本身的局限性(5).标识符不能是C的关键字2.从上面的规则中,有个关键字的概念。那么什么叫关键字呢?从表面字意上也可以看出,关键字是C语言本身某些特性的一个表示,是唯一的代表某一个意思的。下面列出ANSI标准定义的32个C语言的关键字,这些关键字在以后的学习中基本上都会用到,到时再说它们的各自用法。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhileC语言还包括一些不能用做标识符的扩展关键字。asmcdecl_cs_ds_esfarhugeinterruptnearpascal_ss所以在以后的学习中,在给变量命名时要避开这些关键字。3.TurboC2.0规定所有变量在使用前都必须加以说明。一条变量说明语句由数据类型和其后的一个或多个变量名组成。变量说明的形式如下:类型变量表;这里类型是指TurboC2.0的有效数据类型。变量表是一个或多个标识符名,每个标识符之间用,分隔。(二)、整型变量整型变量是用来存储整数的。整型变量又可具体分为好几种,最基本的整型变量是用类型说明符int声明的符号整型,形式如下:intCounter;这里int是类型说明符,Counter是变量的名字。整型变量可以是有符号型、无符号型、长型、短型或象上面定义的普通符号整型。整型是16位的,长整型是32位,短整型等价于整型。以下是几种整型变量的声明示例:longintAmount;/*长整型*/longAmount;/*长整型,等价于上面*/signedintTotal;/*有符号整型*/signedTotal;/*有符号整型,等价于上面*/unsignedintOffset;/*无符号整型*/unsignedOffset;/*无符号整型,等价于上面*/shortintSmallAmt;/*短整型*/shortSmallAmt;/*短整型,等价于上面*/unsignedshortintMonth;/*无符号短整型*/unsignedshortMonth;/*无符号短整型,等价于上面*/从上面的示例可以看出,当定义长整型、短整型、符号整型或无符号整型时,可以省略关键字int。注明:1.用signed对整型变量进行有符号指定是多余的,因为除非用unsigned指定为无符号型,否则整型都是有符号的。2.当一个变量有几重特性时,声明关键字的顺序可以任意。以下几种声明是等价的:unsignedlongT1;longunsignedT2;unsignedlongintT3;unsignedintlongT4;longunsignedintT5;longintunsignedT6;intunsignedlongT7;intlongunsignedT8;(三)、浮点类型变量顾名思义,浮点类型变量是用来存储带有小数的实数的。C语言中有三种不同的浮点类型,以下是对这三种不同类型的声明示例:floatAmount;/*单精度型*/doubleBigAmount;/*双精度型*/longdoubleReallyBigAmount;/*长双精度型*/这里Amount,BigAmount,ReallyBigAmount都是变量名。浮点型都是有符号的。(四)、字符型变量字符型变量中所存放的字符是计算机字符集中的字符。对于PC机上运行的C系统,字符型数据用8位单字节的ASCII码表示。程序用类型说明符char来声明字符型变量:charch;这条声明语句声明了一个字符型变量,标识符为ch。当以这种形式声明变量之后,程序可以在表达式中引用这个变量,关于语句和表达式的知识在后面将会介绍。字符数据类型事实上是8位的整型数据类型,可以用于数值表达式中,与其他的整型数据同样使用。在这种情况下,字符型变量可以是有符号的,也可以是无符号的。对于无符号的字符型变量可以声明为:unsignedcharch;除非声明为无符号型,否则在算术运算和比较运算中,字符型变量一般作为8位有符号整型变量处理。还有其他的如指针型变量,void型变量,以后再介绍。二、常量常量的意思就是不可改变的量,是一个常数。同变量一样,常量也分为整型常量、浮点型常量、字符型常量,还有字符串常量、转义字符常量和地址常量。(一)、整型常量整型常量可以是长整型、短整型、有符号型、无符号型。在TubboC2.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.TurboC默认格式输出浮点数时,最多只保留小数点后六位(三)、字符型常量字符型常量所表示的值是字符型变量所能包含的值。我们可以用ASCII表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。'A','\x2f','\013';其中:\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。注意:在TurboC2.0中,字符型常量表示数的范围是-128到127,除非你把它声明为unsigned,这样就是0到255。(四)、字符串常量字符串常量就是一串字符,用双引号括起来表示。Hello,World!\nEnterselection:\aError!!!(五)、转义字符上面我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。下面给出所有的转义字符和所对应的意义:转义字符描述\'单引号\双引号\\反斜杠\0空字符\0nnn八进制数\a声音符\b退格符\f换页符\n换行符\r回车符\t水平制表符\v垂直制表符\x十六进制符它们的具体用法我们到讲输出语句时再介绍。(六)、地址常量我们前面说的变量是存储数据的空间,它们在内存里都有对应的地址。在C语言里可以用地址常量来引用这些地址,如下:&Counter,∑&是取地址符,作用是取出变量(或者函数)的地址。在后面的输入语句和指针里还会说明。这一节所讲到的变量和常量知识可以说是在一切程序中都要用到,特别是变量的声明和命名规则。无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。注意:赋值语句左边的变量在程序的其他地方必须要声明。得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。例如:count=5;total1=total2=0;第一个赋值语句大家都能理解。第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢?(total1=total2)=0;这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。二、算术运算符在C语言中有两个单目和五个双目运算符。符号功能+单目正-单目负*乘法/除法%取模+加法-减法下面是一些赋值语句的例子,在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Width;num=num1+num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。取模运算符(%)用于计算两个整数相除所得的余数。例如:a=7%4;最终a的结果是3,因为7%4的余数是3。那么有人要问了,我要想求它们的商怎么办呢?b=7/4;这样b就是它们的商了,应该是1。也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。那么怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:a=(int)(7.0/4);因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float)(7/4);最终a的结果是多少?单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。单目加运算符没有意义,纯粹是和单目减构成一对用的。三、逻辑运算符逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。符号功能&&逻辑与||逻辑或!逻辑非例如:5!3;0||-2&&5;!4;当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非