《c语言课件 第02章》由会员分享,可在线阅读,更多相关《c语言课件 第02章(40页珍藏版)》请在金锄头文库上搜索。
1、第2章 基本数据类型,2.1 字符集及词法约定 2.2 常 量 2.3 简 单 变 量 2.4 基本数据类型及其转换 2.5 printf()和scanf()函数的一般使用,2.1 字符集及词法约定,2.1.1 字符集利用C 语言编写源程序时用到的字符集中有数字、字母、图形符号、转义序列和三联字符序列等。 数字:0,1,9。 字母:A、B、Z和a、b、z。 图形符号:! “ # & ( ) * , / ; : ? _ | 。 转义序列。 三联字符序列。,2.1.2 词法约定在C语言中主要包括6类单词:标识符、关键字、常量、字符串字面量、运算符和标点符。(1)注释以“/*”开头、“*/”结束的一
2、个字符串。(2)标识符在C语言中,标识符用来标记常量、变量、数据类型、函数及程序的名字。必须符合下列语法规则: 应以字母(大小写皆可)或下线符(_)中任一个字符开头。 在第一个字母后,可以是任意字母、下线符和数字组成的字符序列,此序列可为空串。,下列字符序列是合法的标识符:NAME1name1Total_5Paper_i3_out,以下字符序列不是合法的标识符:NAME 1 中间留有空格,它不是字母数字串name$2 中间有$,它为非字母、数字字符5t 开头的是数字,而不是字母$4 开头的是一般字符,不是字母,标识符必须选择恰当,使程序易读,也可以减少书写程序或修改程序时由于疏忽而产生的错误。
3、在选择标识符时,还要尽量避免使用容易混淆的字符。一般情况下,C语言中大写字母和小写字母是不同的。另外,标识符的最大长度受实现限制。(3)关键字又称作保留字,它是具有特定含义、专门用作语言的特定成分的一类标识符,不能当作一般标识符来使用。,(4)标点符C语言中的标点符共有13个,即: ( ) * , : = ; #,2.2 常 量,在C语言中有不同类型的常量,如整型常量、浮点常量、字符常量和字符串常量。常量在C语言中出现的形式一般有两种。字面量。符号常量。,2.2.1 整型常量C语言中普通整常量在机器中占一个字长。在C语言中,整常量又分为十进制整常量、八进制整常量和十六进制整常量。1十进制整常量
4、十进制整常量是带正负号的整数。2八进制整常量八进制整常量是以数字0开头的八进制数字串,其中只能出现数字07。3十六进制整常量十六进制整常量是以0x或0X开头的十六进制数字串,可用的数字有:09、af或AF。,4整常量的后缀(1)无符号型后缀 无符号型后缀用小写字母u或者大写字母U表示 (unsigned int)。(2)长型后缀长型后缀用小写字母l或大写字母L表示 (long int)。如果一个整常量后面同时带有后缀l(L)和u(U),那么,它的类型就是unsigned long int。,2.2.2 浮点常量它有两种表示形式:(1)十进制数形式3.14、0.618、.618、10.0和123
5、.。必须有小数点,并且小数点的前面或者后面必须有数字。(2)指数形式2.98e6( 或2.98E6)、3.0e8(或3.0E8)、6.E5、6e5和.123E4。必须有阶码标志e(或E),并且e之前必须有数字,e之后的指数必须是整数。,浮点常量不带后缀,类型就是双精度型(double)。后面带有后缀字母F或f,类型就是单精度浮点型(float),字母l或L,类型就是长双精度型(long double)。在一般系统中,单精度浮点数占用4个字节(32位)的存储单元,而双精度浮点数占用8个字节。,2.2.3 字符常量字符常量是用单引号括起来的一个字符或字符序列,如 x、AB、9和*等。在C语言中转义
6、序列有三种:简单转义序列、八进制转义序列和十六进制转义序列。(1)简单转义序列 “ ? a b f n r t v(2)八进制转义序列 如:014、75和6等。,(3)十六进制转义序列如:x9、x1A和x123等。八进制转义序列和十六进制转义序列在构成形式上虽然出现多个字符,但在相应的字符常量或字符串常量中却只代表一个字符。字符常量的类型是int。它的值就是该字符在相应字符集中的编码值。字符常量可像其他整数一样参与数值运算。在C语言中,用0表示空字符NUL,它所占字节的各位都是0,因而它的值也是0。空字符不是空白字符。还应注意0与0的区别。,2.2.4 字符串常量它是用一对双引号括起来的零个或
7、多个字符组成的序列,如:Hello!This is a character string1234567890 (在双引号中没有任何字符) 字符串常量也可以看成是一个数组,这个数组的元素为一个一个的字符。编译程序会自动在每个字符串末尾放上空字符“0”,作为字符串的结尾。,每个字符串所需要的实际空间要比用户给出的字符数多一个字节。x就不同于“x”。前者是单独一个字符,后者包含了两个字符:字母“x”和一个字符“0”。字符0是编译程序自动加上的,在字符串末尾,所以在计算字符串长度时,并不把它计算在内。,2.3 简 单 变 量,在程序中使用一个变量之前,先要对它进行定义: int i; int i,j,
8、k; float price,total; 在C语言中定义变量的一般形式是:数据类型 变量名; 或者数据类型 变量名1,变量名2,;其中数据类型部分是表示相应数据类型的关键字。,在对变量进行定义时,还应注意以下几点: 不同类型的变量应在各自数据说明行上定义,不要把它们统统写在一行上,以增加程序的可读性。 在程序的同一部分,不允许对同一标识符做重复定义。例如: 1 main() 2 3 int a,b,sum; 4 float price,sum; 5 char a,flag;., 数据说明语句的最后是以分号结尾,而同一说明语句的各个变量名之间则以逗号隔开。例如:int i,j,k;,2.4 基
9、本数据类型及其转换,2.4.1 整型int及其相关类型表示整型量的关键字是int。int i;在目前大多数实现中,整型变量的取值范围因机器字长而异。在字长为16位的机器上,整型变量i的取值范围是:32768i32767对它们可以施行如下算术运算:(加) (减) *(乘) (除) (取模),整型数据还可使用下述关系运算符: ! C语言中与int有关的类型还有: short int,简写为short,是短整型。 long int,简写为long,是长整型。 unsigned int,简写为unsigned,是无符号整数。,2.4.2 字符型char及其相关类型表示字符类型变量的关键字是char。c
10、har c;一个字符型变量所占用的内存空间应足以存放所用基本字符集中任何一个字符。通常占用一个字节,即8位。在ANSI C 和ISO C中,还规定了signed char和 unsigned char两种类型,unsigned char型量的取值范围是0255,signed char型量的取值范围是127127。,当把一个字符常量赋给一个字符变量时,该字符变量的值就是相应字符的编码值。在C语言中字符数据往往可以像整型数据那样进行有关运算。字符数据可以以字符形式输出,也可以用整数形式输出。,2.4.3 浮点型float 基本浮点类型的关键字是float。 float f;C语言中还提供其他两种浮
11、点类型:double和long double,分别称作双精度类型和长双精度类型。,一般机器上float型量占4个字节(32位),double型量占8个字节(64位),而long double型量要占16个字节(128位)。浮点变量可进行的算术运算有下述4种: * 其运算结果仍是一个浮点量。但大家应注意,取模运算符“”不能作用于浮点类型的量上。为了保持运算精度,在运算时所有的float型量都被转换成double型。,2.4.4 类型转换如果一个运算符有两个不同类型的运算分量,那么,在操作之前先将“较低”的类型提升为“较高”的类型,使二者类型统一,然后进行操作;其结果是“较高”类型。而类型的高低是
12、由其属性(取值范围、精度、作用等)来决定的。由算术运算符对运算分量自动实施的类型转换称为普通算术转换。也称为隐式转换。,在进行运算之前,所有char型和short型数据都转换成int型,所有float型数据都转换成double型,以提高运算精度。在赋值语句中,赋值号右边表达式的值的类型要转换成赋值号左边变量的类型。int i=10;float pi=3.14;double f;f=i*pi;,例2-2:分析下面程序输出的结果。 /* Basic conversions in C */ void main() int a,b=550;char c=7;float f1=3.142,f2;a=b/
13、c; /* integer divided by a character */printf(a=dn,a);,a=f1; /* float to integer conversion */printf(f1=fa=dn,f1,a);f1=b;/* integer to float conversion */printf(b=df1=fnb,f1);f2=b/50.0;/* integer divided by a float */printf(b=d,f2=fn,b,f2); 输出结果是:a=10f1=3.142000a=3b=550f1=550.000000b=550,f2=11.00000
14、0,显式类型转换,这就是利用类型强制转换运算符“(类型名)表达式”形式中的一对圆括号,强行把其后表达式的类型转换成圆括号中给定的类型。,2.5 printf()和scanf()函数的一般使用,(1)printf()函数printf()函数的功能是按指定的格式控制要求把相应的参数值在标准输出设备(通常是终端)上显示出来。 printf()的一般使用格式是:printf(格式控制串,参数1,参数2,);printf(“The value = d * * * dn“,a,b);,(2)scanf()函数scanf()函数的功能是接受用户从键盘上输入的数据,按照格式控制符的要求进行类型转换,然后送到由对应参数指示的变量单元中去。scanf()的一般使用格式是:scanf(格式控制串,参数1,参数2,);例如:scanf(“df“,&a,&r);,