C语言基本数据类型(同名716)课件_第1页
C语言基本数据类型(同名716)课件_第2页
C语言基本数据类型(同名716)课件_第3页
C语言基本数据类型(同名716)课件_第4页
C语言基本数据类型(同名716)课件_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章基本数据类型字符集及词法约定2.1常量2.2简单变量2.3基本数据类型及其转换

2.4printf和scanf函数的一般使用2.5第2章基本数据类型字符集及词法约定2.1常量2.1本章介绍有关数据类型的最基本的内容,包括表示方式、取值范围及一般转换规则等。另外也简要介绍常用库函数printf()和scanf()的一般使用格式。本章介绍有关数据类型的最基本的内容,包括表示22.1字符集及词法约定2.1.1字符集(1)数字:我们平常使用的10个十进制数字:0,1,…,9。(2)字母:大、小写英文字母各26个:A,B,…,Z和a,b,…,z。大、小写字母是有区别的,表示不同的字符。2.1字符集及词法约定2.1.1字符集3(3)图形符号:29个图形(可见)字符,即:!"#%&'()*+,−·/;:<=>?[\]^_{|}~(4)转义序列。表2-1列出了C语言源程序中常用到的一些转义序列及其含义。(3)图形符号:29个图形(可见)字符,即:4字符名表示形式含义备注换行\n把打印(显示)位置移到下一行的起始位置水平制表\t把打印位置移到当前行的下一个制表点(通常是右移8个字符的间隔)与实现有关表2-1 转义序列及其含义字符名表示形式含义备注换行\n把打印5字符名表示形式含义备注垂直制表\v把打印位置移到下一行制表点起始位置与实现有关退格\b把打印位置在当前行上向后退一个字符位置与实现有关回车\r把打印位置移到当前行的起始位置换页\f把打印位置移到下一个逻辑页开头的起始位置报警\a产生可听或可见的报警,位置不变与实现有关问号\?打印问号单引号\'打印单引号双引号\"打印双引号反斜线\\打印一个反斜线续表字符名表示形式含义备注垂直制表\v把6(1)标识符在C语言中,用来标记常量、变量、数据类型、函数及程序的名字。必须符合下列语法规则:①应以字母(大小写皆可)或下线符(_)中任一个字符开头。2.1.2词法约定(1)标识符2.1.2词法约定7②在第一个字母后,可以是任意字母、下线符和数字组成的字符序列,此序列可为空串。根据以上规则,下列字符序列是合法的标识符:NAME1 name1Total_5Paper_i3_out②在第一个字母后,可以是任意字母、下线符和数字组成的字符序8而以下字符序列不是合法的标识符:NAME1 中间留有空格,它不是字母数字串name$2 中间有$,此为非字母、数字字符5t 开头的是数字,而不是字母$4 开头的是一般字符,不是字母而以下字符序列不是合法的标识符:9程序中的标识符必须选择恰当。在选择标识符时,要尽量避免使用容易混淆的字符。C语言区分大、小写字母,所以name1、Name1和NAME1可在同一程序中使用,各代表不同的变量。标识符的最大长度还受实现的限制。程序中的标识符必须选择恰当。10(2)关键字在有些语言中关键字又称作保留字。它是具有特定含义、专门用作语言的特定成分的一类标识符。不能当作一般标识符使用。表2-2列出C语言的全部关键字及其用途。(2)关键字11关键字类型用途char数据类型字符量int整型量long长整型量short短整型量float单精度浮点量double双精度浮点量unsigned无符号量(最高位不作符号位)signed有符号量struct结构型量union联合型量enum枚举型量void无值量const常量volatile易变量auto存储类自动量extern外部量static静态量register寄存器量typedef类型命名表2-2 关键字及其用途关键字类型用途char数据类型字符量12关键字类型用途if流程控制条件语句else条件语句的另一种选择forfor循环语句whilewhile和do-while循环语句dodo-while语句break间断语句continue接续语句goto跳转语句return返回语句switch多路选择语句default多路选择语句中的默认情况case多路选择语句中的情况选择sizeof运算符计算字节数续表关键字类型用途if流程控制条件语句e13(3)标点符号C语言中标点符号是表示语法的符号,共有13个,即:[](){}*,:=;…#(3)标点符号14程序中往往要用到一些预先给定值的量,并且在程序执行过程中其值不再发生变化。这类数据一般称为常量。2.2常量程序中往往要用到一些预先给定值的量,并且在程15C语言中有不同类型的常量,如整型常量、浮点常量、字符常量和字符串常量。常量在C语言中出现的形式一般有两种:一种是在程序中直接使用给定的值,2和3.1415926都是固定不变的量,而且直接以值的形式出现。这种形式的常量往往称为字面量。C语言中有不同类型的常量,如整型常量、浮点常16另一种形式是采用宏定义形式,例如:#definePI3.1415926经过宏定义之后,就用标识符来代表字面量,这种形式的常量通常称为符号常量。符号常量的名字往往用大写字母,不能把符号常量名当作变量使用。另一种形式是采用宏定义形式,例如:#def17在C语言中,整常量分为十进制整常量、八进制整常量和十六进制整常量。普通整常量在机器中占一个字长。1.十进制整常量十进制整常量是带正负号的整数。如12,2008,10001,−39。2.2.1整型常量在C语言中,整常量分为十进制整常量、八进制整18八进制整常量是以数字0开头的八进制数字串,其中只能出现数字0~7。通常,它是无符号数(即没有正负号的数)。2.八进制整常量八进制整常量是以数字0开头的八进制数字串,其19十六进制整常量是以0x或0X开头的十六进制数字串,可用的数字有0~9,a~f或A~F。3.十六进制整常量十六进制整常量是以0x或0X开头的十六进制数20(1)无符号型后缀无符号型后缀用小写字母u或者大写字母U表示(unsignedint)。例如,986u,07654u,0XFEDu等都是无符号整常量。4.整常量的后缀(1)无符号型后缀4.整常量的后缀21(2)长型后缀长型后缀用小写字母l或大写字母L表示(longint)。例如:62l,0123L,0x327l等。如果一个整常量后面同时带有后缀l(L)和u(U),那么,它的类型就是unsignedlongint(无符号长整型)。例如:9999lu,077777LU等。(2)长型后缀22它有以下两种表示形式。(1)十进制数形式例如:3.14,0.618,.618,10.0,123.等都是合法的浮点常量。在这种形式中,一个浮点常量是由数字和小数点组成。必须有小数点,并且小数点的前面或者后面必须有数字。2.2.2浮点常量它有以下两种表示形式。2.2.2浮点常量23(2)指数形式例如:2.98e6(或2.98E6),3.0e8(或3.0E8),6.E−5,6e−5,.123E+4等都是合法的浮点常量。在这种形式中,必须带有阶码标志e(或E),并且e之前必须有数字,e之后的指数必须是整数。(2)指数形式24如果浮点常量不带后缀,那么它的类型就是双精度型(double)。若在浮点常量后面带有后缀——字母F或f,那么它的类型就是单精度浮点型(float),通常简称为浮点型。在浮点常量后面还可带有后缀——字母l或L,此时,它的类型就是长双精度型(longdouble)。在一般系统中,单精度浮点数占用4个字节(32位)的存储单元,而双精度浮点数占用8个字节。如果浮点常量不带后缀,那么它的类型就是双精度25在C语言中,字符常量是用单引号括起来的一个字符或字符序列,如'x'、'AB'、'9'、'*'等。除以上形式外,构成字符常量的字符还可以是转义序列。在C语言中转义序列有三种:简单转义序列、八进制转义序列和十六进制转义序列。2.2.3字符常量在C语言中,字符常量是用单引号括起来的一个字26(1)简单转义序列\'\"\?\\\a\b\f\n\r\t\v虽然在形式上它们是由两个字符构成的,却只代表一个字符。(2)八进制转义序列它是由反斜线\和后随的一个、两个或三个八进制数字构成的,如:\014、\75、\6等。(1)简单转义序列27(3)十六进制转义序列它是由反斜线\、字母x和后随的一个、两个或三个十六进制数字构成,如:\x9、\x1A、\x123等。上述八进制转义序列和十六进制转义序列在构成形式上虽然出现多个字符,但在相应的字符常量或字符串常量中却只代表一个字符。如\014、\xB9等都分别是一个字符的含义。(3)十六进制转义序列28字符常量的类型是int。它的值就是该字符在相应字符集中的编码值。字符常量可像其他整数一样参与数值运算。字符常量的类型是int。29在C语言中,用'\0'表示空字符NUL,在机器中存放时它所占字节的各位都是0,因而它的值也是0。要注意,空字符不是空白字符。还应注意'\0'与'0'的区别。空字符常用来标识一个字符串的结尾。在C语言中,用'\0'表示空字符NUL,在机30它是用一对双引号括起来的零个或多个字符组成的序列,如:"Hello!""Thisisacharacterstring""1234567890"""(在双引号中没有任何字符)字符串常量也可以看成是一个数组,这个数组的元素为一个一个的字符。2.2.4字符串常量它是用一对双引号括起来的零个或多个字符组成的31编译程序在编译源文件时会自动在每个字符串末尾放上空字符“\0”,作为字符串的结尾,这种方式也表明:在C程序中,对字符串的长度不加限制。一个字符串究竟有多长,要到达结尾字符“\0”时才能确定。编译程序在编译源文件时会自动在每个字符串末尾32每个字符串所需要的实际空间要比用户给出的字符数多一个字节。'x'就不同于"x"。前者是单独一个字符,而后者是一个字符串,它包含了两个字符:字母“x”和一个空字符“\0”。每个字符串所需要的实际空间要比用户给出的字符33变量是在程序执行过程中其值可以改变的量。在程序中使用一个变量之前,先要对它进行定义:为它指定一个名称(变量名),指明它是什么类型的变量等。变量名应是合法的标识符。inti;intj;intk;2.3简单变量变量是在程序执行过程中其值可以改变的量。2.34同时对几个有相同类型的变量进行定义,也可以简写在一行中,如:inti,j,k;注意,int与i之间有空格,各变量名之间要用逗号隔开,最后一个变量名后面要用分号结尾。同时对几个有相同类型的变量进行定义,也可以简35在C语言中定义变量的一般形式是:数据类型变量名;或者数据类型变量名1,变量名2,……;在C语言中定义变量的一般形式是:36定义变量时,还应注意以下几点。①不同类型的变量应在各自数据说明行上定义,不要把它们统统写在一行上,以增加程序的可读性。定义变量时,还应注意以下几点。37②在程序的同一部分,不允许对同一标识符做重复定义。例如:1 main()2 {3 inta,b,sum;4 floatprice,sum;5 chara,flag;

}

②在程序的同一部分,不允许对同一标识符做重复定义。例如:38③数据说明语句是以分号结尾,而同一说明语句中各个变量名之间以逗号隔开。例如:inti,j,k;③数据说明语句是以分号结尾,而同一说明语句中各个变量名之间392.4基本数据类型及其转换C语言数据类型基本类型字符型整型浮点型双精度型表2-3 C语言数据类型

2.4基本数据类型及其转换C语言数据类型基本类型字符型整40C语言数据类型枚举类型枚举型无值型导出类型数组结构联合函数指针型续表C语言数据类型枚举类型枚举型无值型导出类型数组结构联合函数指412.4.1整型int及其相关类型在C语言中,表示整型量的关键字是int,所以一个整型变量i的说明形式为:inti;在目前大多数实现中,整型变量的取值范围因机器字长而异。在字长为16位的机器上,整型变量i的取值范围是:−32768≤i≤327672.4.1整型int及其相关类型在C语42对它们可以施行如下算术运算:+(加)−(减)﹡(乘)/(除)%(取模)整数还可使用下述运算符进行关系运算:>>===<=<!=对它们可以施行如下算术运算:43C语言中与int有关的类型还有:(1)短整型shortint,简写为short。(2)长整型longint,简写为long。(3)无符号整数unsignedint,简写为unsigned。C语言中与int有关的类型还有:44表示字符型变量的关键字是char。charc;一个字符型变量所占用的内存空间应足以存放所用基本字符集中任何一个字符,通常占用一个字节,即8位。2.4.2字符型char及其相关类型表示字符型变量的关键字是char。2.4.245在ANSIC和ISOC中,还规定了signedchar和unsignedchar两种类型,unsignedchar型量的取值范围是0~255,而signedchar型量的取值范围是−127~127。在ANSIC和ISOC中,还规定了sign46当把一个字符常量赋给一个字符变量时,该字符变量的值就是相应字符的编码值。在C语言中字符数据往往可以像整型数据那样进行有关运算。当把一个字符常量赋给一个字符变量时,该字符变47例2-1在ASCII字符集中,字母A的序号为65,分析以下程序的输出结果。#include<stdio.h>main(){charx,y;x='A'+10;y='Z'−20;printf("%c=%d,%c=%d\n",x,x,y,y);return(0);}例2-1在ASCII字符集中,字母A的序48字符数据可以以字符形式输出,也可以用整数形式输出。字符数据可以以字符形式输出,也可以用整数形式49表示基本浮点类型的关键字是float。floatf;C语言中还提供其他两种浮点类型:double和longdouble,分别称作双精度类型和长双精度类型。float量的取值范围是double量的子集,而double量的取值范围又是longdouble量的子集。2.4.3浮点型float表示基本浮点类型的关键字是float。2.450一般机器上float量占4个字节(32位),double量占8个字节(64位),而longdouble量要占16个字节(128位)。浮点变量可进行的算术运算有下述4种:+−*/一般机器上float量占4个字节(32位)51其运算结果仍是一个浮点量。但大家应注意,取模运算符“%”不能作用于浮点量上。为了保持运算精度,在运算时所有的float量都被转换成double量。其运算结果仍是一个浮点量。但大家应注意,取模52inti=10;floatpi=3.14;doublef;f=i*pi;2.4.4类型转换inti=10;2.4.4类型转换53不同类型的量在一起进行算术运算时需进行类型转换。即:如果一个运算符有两个不同类型的运算分量,那么,在操作之前先将“较低”的类型提升为“较高”的类型,使二者类型统一,然后进行操作;其结果是“较高”类型。而类型的高低是由其属性(取值范围、精度、作用等)来决定的。不同类型的量在一起进行算术运算时需进行类型转54由算术运算符对运算分量自动实施的类型转换称为普通算术转换,也称为隐式转换。由算术运算符对运算分量自动实施的类型转换称为55图2-1算术转换规则图2-1算术转换规则56在进行运算之前,所有char型和short型数据都转换成int型,所有float型数据都转换成double型,从而可以提高运算精度。在赋值语句中,赋值号右边表达式的值的类型要转换成赋值号左边变量的类型。在进行运算之前,所有char型和short型57例如:inti=10;floatpi=3.14;doublef;f=i*pi;例如:58例2-2分析下面程序输出的结果。/*BasicconversionsinC*/main(){inta,b=−550;charc='7';floatf1=3.142,f2;a=b/c;/*integerdividedbyacharacter*/printf("a=%d\n",a);例2-2分析下面程序输出的结果。59a=f1;/*floattointegerconversion*/printf("f1=%f……a=%d\n",f1,a);f1=b;/*integertofloatconversion*/printf("b=%d……f1=%f\n"b,f1);f2=b/50.0;/*integerdividedbyafloat*/printf("b=%d,f2=%f\n",b,f2);return(0);}a=f1;/*floattointegercon60输出结果是:a=−10f1=3.142000……a=3b=−550……f1=−550.000000b=−550,f2=−11.000000输出结果是:61C语言中除上述隐式类型转换外,还有显式类型转换,这就是利用类型强制转换运算符“(类型名)表达式”形式中的一对圆括号,强行把其后表达式的类型转换成圆括号中给定的类型。C语言中除上述隐式类型转换外,还有显式类型转62(1)printf()函数printf()函数的功能是按指定的输出格式把相应的参数值在标准输出设备(通常是终端)上显示出来。2.5printf和scanf函数的一般使用(1)printf()函数2.5printf和scan63printf()的一般使用格式是:printf(格式控制串,参数1,参数2,…);例如:printf("Thevalue=%d***%d\n",a,b);printf()的一般使用格式是:64转换说明输出形式应用例子输出示例%d十进制int型printf("sum=%d\n",sum);sum=2008%f十进制double型printf("a=%f\n",a);a=6.280000%c单个字符printf(“Itis%c\n",c);ItisM%s字符串printf("**%s**\n",s);**Hello!**%o无符号八进制数printf("Oct=%o\n",oct);Oct=176%x无符号十六进制数printf("Hex=%x\n",hex);Hex=96AF%%%本身printf("a%%b=%d\n",d);a%b=5表2-6 printf()中常用的转换说明及其作用转换说明输出形式应用例子输出示例%d65(2)scanf()函数scanf()函数的功能是接受用户从键盘上输入的数据,按照格式控制符的要求进行类型转换,然后送到由对应参数指示的变量单元中去。(2)scanf()函数66scanf()的一般使用格式是:scanf(格式控制串,参数1,参数2,…);例如:scanf("%d%f",&a,&r);scanf()的一般使用格式是:67转换说明输入形式应用例子输入示例%d匹配可带符号的十进制整数scanf("%d",&a);输入100,则a为100%f匹配可带符号的浮点数scanf("%f",&f);输入3.14,则a为3.140000%c匹配一个(默认)字符scanf("%c",&c);输入A,则c为'A'%s匹配非空白字符序列scanf("%s",line);输入string,则数组line中放置string,末尾自动加上空字符%o匹配可带符号的八进制整数scanf("%o",&u);输入754,则u的值为八进制754%x匹配可带符号的十六进制整数scanf("%x",&x);输入123,则x值为十六进制123表2-7 scanf()中常用的转换说明及其作用转换说明输入形式应用例子输入示例68第2章基本数据类型字符集及词法约定2.1常量2.2简单变量2.3基本数据类型及其转换

2.4printf和scanf函数的一般使用2.5第2章基本数据类型字符集及词法约定2.1常量2.69本章介绍有关数据类型的最基本的内容,包括表示方式、取值范围及一般转换规则等。另外也简要介绍常用库函数printf()和scanf()的一般使用格式。本章介绍有关数据类型的最基本的内容,包括表示702.1字符集及词法约定2.1.1字符集(1)数字:我们平常使用的10个十进制数字:0,1,…,9。(2)字母:大、小写英文字母各26个:A,B,…,Z和a,b,…,z。大、小写字母是有区别的,表示不同的字符。2.1字符集及词法约定2.1.1字符集71(3)图形符号:29个图形(可见)字符,即:!"#%&'()*+,−·/;:<=>?[\]^_{|}~(4)转义序列。表2-1列出了C语言源程序中常用到的一些转义序列及其含义。(3)图形符号:29个图形(可见)字符,即:72字符名表示形式含义备注换行\n把打印(显示)位置移到下一行的起始位置水平制表\t把打印位置移到当前行的下一个制表点(通常是右移8个字符的间隔)与实现有关表2-1 转义序列及其含义字符名表示形式含义备注换行\n把打印73字符名表示形式含义备注垂直制表\v把打印位置移到下一行制表点起始位置与实现有关退格\b把打印位置在当前行上向后退一个字符位置与实现有关回车\r把打印位置移到当前行的起始位置换页\f把打印位置移到下一个逻辑页开头的起始位置报警\a产生可听或可见的报警,位置不变与实现有关问号\?打印问号单引号\'打印单引号双引号\"打印双引号反斜线\\打印一个反斜线续表字符名表示形式含义备注垂直制表\v把74(1)标识符在C语言中,用来标记常量、变量、数据类型、函数及程序的名字。必须符合下列语法规则:①应以字母(大小写皆可)或下线符(_)中任一个字符开头。2.1.2词法约定(1)标识符2.1.2词法约定75②在第一个字母后,可以是任意字母、下线符和数字组成的字符序列,此序列可为空串。根据以上规则,下列字符序列是合法的标识符:NAME1 name1Total_5Paper_i3_out②在第一个字母后,可以是任意字母、下线符和数字组成的字符序76而以下字符序列不是合法的标识符:NAME1 中间留有空格,它不是字母数字串name$2 中间有$,此为非字母、数字字符5t 开头的是数字,而不是字母$4 开头的是一般字符,不是字母而以下字符序列不是合法的标识符:77程序中的标识符必须选择恰当。在选择标识符时,要尽量避免使用容易混淆的字符。C语言区分大、小写字母,所以name1、Name1和NAME1可在同一程序中使用,各代表不同的变量。标识符的最大长度还受实现的限制。程序中的标识符必须选择恰当。78(2)关键字在有些语言中关键字又称作保留字。它是具有特定含义、专门用作语言的特定成分的一类标识符。不能当作一般标识符使用。表2-2列出C语言的全部关键字及其用途。(2)关键字79关键字类型用途char数据类型字符量int整型量long长整型量short短整型量float单精度浮点量double双精度浮点量unsigned无符号量(最高位不作符号位)signed有符号量struct结构型量union联合型量enum枚举型量void无值量const常量volatile易变量auto存储类自动量extern外部量static静态量register寄存器量typedef类型命名表2-2 关键字及其用途关键字类型用途char数据类型字符量80关键字类型用途if流程控制条件语句else条件语句的另一种选择forfor循环语句whilewhile和do-while循环语句dodo-while语句break间断语句continue接续语句goto跳转语句return返回语句switch多路选择语句default多路选择语句中的默认情况case多路选择语句中的情况选择sizeof运算符计算字节数续表关键字类型用途if流程控制条件语句e81(3)标点符号C语言中标点符号是表示语法的符号,共有13个,即:[](){}*,:=;…#(3)标点符号82程序中往往要用到一些预先给定值的量,并且在程序执行过程中其值不再发生变化。这类数据一般称为常量。2.2常量程序中往往要用到一些预先给定值的量,并且在程83C语言中有不同类型的常量,如整型常量、浮点常量、字符常量和字符串常量。常量在C语言中出现的形式一般有两种:一种是在程序中直接使用给定的值,2和3.1415926都是固定不变的量,而且直接以值的形式出现。这种形式的常量往往称为字面量。C语言中有不同类型的常量,如整型常量、浮点常84另一种形式是采用宏定义形式,例如:#definePI3.1415926经过宏定义之后,就用标识符来代表字面量,这种形式的常量通常称为符号常量。符号常量的名字往往用大写字母,不能把符号常量名当作变量使用。另一种形式是采用宏定义形式,例如:#def85在C语言中,整常量分为十进制整常量、八进制整常量和十六进制整常量。普通整常量在机器中占一个字长。1.十进制整常量十进制整常量是带正负号的整数。如12,2008,10001,−39。2.2.1整型常量在C语言中,整常量分为十进制整常量、八进制整86八进制整常量是以数字0开头的八进制数字串,其中只能出现数字0~7。通常,它是无符号数(即没有正负号的数)。2.八进制整常量八进制整常量是以数字0开头的八进制数字串,其87十六进制整常量是以0x或0X开头的十六进制数字串,可用的数字有0~9,a~f或A~F。3.十六进制整常量十六进制整常量是以0x或0X开头的十六进制数88(1)无符号型后缀无符号型后缀用小写字母u或者大写字母U表示(unsignedint)。例如,986u,07654u,0XFEDu等都是无符号整常量。4.整常量的后缀(1)无符号型后缀4.整常量的后缀89(2)长型后缀长型后缀用小写字母l或大写字母L表示(longint)。例如:62l,0123L,0x327l等。如果一个整常量后面同时带有后缀l(L)和u(U),那么,它的类型就是unsignedlongint(无符号长整型)。例如:9999lu,077777LU等。(2)长型后缀90它有以下两种表示形式。(1)十进制数形式例如:3.14,0.618,.618,10.0,123.等都是合法的浮点常量。在这种形式中,一个浮点常量是由数字和小数点组成。必须有小数点,并且小数点的前面或者后面必须有数字。2.2.2浮点常量它有以下两种表示形式。2.2.2浮点常量91(2)指数形式例如:2.98e6(或2.98E6),3.0e8(或3.0E8),6.E−5,6e−5,.123E+4等都是合法的浮点常量。在这种形式中,必须带有阶码标志e(或E),并且e之前必须有数字,e之后的指数必须是整数。(2)指数形式92如果浮点常量不带后缀,那么它的类型就是双精度型(double)。若在浮点常量后面带有后缀——字母F或f,那么它的类型就是单精度浮点型(float),通常简称为浮点型。在浮点常量后面还可带有后缀——字母l或L,此时,它的类型就是长双精度型(longdouble)。在一般系统中,单精度浮点数占用4个字节(32位)的存储单元,而双精度浮点数占用8个字节。如果浮点常量不带后缀,那么它的类型就是双精度93在C语言中,字符常量是用单引号括起来的一个字符或字符序列,如'x'、'AB'、'9'、'*'等。除以上形式外,构成字符常量的字符还可以是转义序列。在C语言中转义序列有三种:简单转义序列、八进制转义序列和十六进制转义序列。2.2.3字符常量在C语言中,字符常量是用单引号括起来的一个字94(1)简单转义序列\'\"\?\\\a\b\f\n\r\t\v虽然在形式上它们是由两个字符构成的,却只代表一个字符。(2)八进制转义序列它是由反斜线\和后随的一个、两个或三个八进制数字构成的,如:\014、\75、\6等。(1)简单转义序列95(3)十六进制转义序列它是由反斜线\、字母x和后随的一个、两个或三个十六进制数字构成,如:\x9、\x1A、\x123等。上述八进制转义序列和十六进制转义序列在构成形式上虽然出现多个字符,但在相应的字符常量或字符串常量中却只代表一个字符。如\014、\xB9等都分别是一个字符的含义。(3)十六进制转义序列96字符常量的类型是int。它的值就是该字符在相应字符集中的编码值。字符常量可像其他整数一样参与数值运算。字符常量的类型是int。97在C语言中,用'\0'表示空字符NUL,在机器中存放时它所占字节的各位都是0,因而它的值也是0。要注意,空字符不是空白字符。还应注意'\0'与'0'的区别。空字符常用来标识一个字符串的结尾。在C语言中,用'\0'表示空字符NUL,在机98它是用一对双引号括起来的零个或多个字符组成的序列,如:"Hello!""Thisisacharacterstring""1234567890"""(在双引号中没有任何字符)字符串常量也可以看成是一个数组,这个数组的元素为一个一个的字符。2.2.4字符串常量它是用一对双引号括起来的零个或多个字符组成的99编译程序在编译源文件时会自动在每个字符串末尾放上空字符“\0”,作为字符串的结尾,这种方式也表明:在C程序中,对字符串的长度不加限制。一个字符串究竟有多长,要到达结尾字符“\0”时才能确定。编译程序在编译源文件时会自动在每个字符串末尾100每个字符串所需要的实际空间要比用户给出的字符数多一个字节。'x'就不同于"x"。前者是单独一个字符,而后者是一个字符串,它包含了两个字符:字母“x”和一个空字符“\0”。每个字符串所需要的实际空间要比用户给出的字符101变量是在程序执行过程中其值可以改变的量。在程序中使用一个变量之前,先要对它进行定义:为它指定一个名称(变量名),指明它是什么类型的变量等。变量名应是合法的标识符。inti;intj;intk;2.3简单变量变量是在程序执行过程中其值可以改变的量。2.102同时对几个有相同类型的变量进行定义,也可以简写在一行中,如:inti,j,k;注意,int与i之间有空格,各变量名之间要用逗号隔开,最后一个变量名后面要用分号结尾。同时对几个有相同类型的变量进行定义,也可以简103在C语言中定义变量的一般形式是:数据类型变量名;或者数据类型变量名1,变量名2,……;在C语言中定义变量的一般形式是:104定义变量时,还应注意以下几点。①不同类型的变量应在各自数据说明行上定义,不要把它们统统写在一行上,以增加程序的可读性。定义变量时,还应注意以下几点。105②在程序的同一部分,不允许对同一标识符做重复定义。例如:1 main()2 {3 inta,b,sum;4 floatprice,sum;5 chara,flag;

}

②在程序的同一部分,不允许对同一标识符做重复定义。例如:106③数据说明语句是以分号结尾,而同一说明语句中各个变量名之间以逗号隔开。例如:inti,j,k;③数据说明语句是以分号结尾,而同一说明语句中各个变量名之间1072.4基本数据类型及其转换C语言数据类型基本类型字符型整型浮点型双精度型表2-3 C语言数据类型

2.4基本数据类型及其转换C语言数据类型基本类型字符型整108C语言数据类型枚举类型枚举型无值型导出类型数组结构联合函数指针型续表C语言数据类型枚举类型枚举型无值型导出类型数组结构联合函数指1092.4.1整型int及其相关类型在C语言中,表示整型量的关键字是int,所以一个整型变量i的说明形式为:inti;在目前大多数实现中,整型变量的取值范围因机器字长而异。在字长为16位的机器上,整型变量i的取值范围是:−32768≤i≤327672.4.1整型int及其相关类型在C语110对它们可以施行如下算术运算:+(加)−(减)﹡(乘)/(除)%(取模)整数还可使用下述运算符进行关系运算:>>===<=<!=对它们可以施行如下算术运算:111C语言中与int有关的类型还有:(1)短整型shortint,简写为short。(2)长整型longint,简写为long。(3)无符号整数unsignedint,简写为unsigned。C语言中与int有关的类型还有:112表示字符型变量的关键字是char。charc;一个字符型变量所占用的内存空间应足以存放所用基本字符集中任何一个字符,通常占用一个字节,即8位。2.4.2字符型char及其相关类型表示字符型变量的关键字是char。2.4.2113在ANSIC和ISOC中,还规定了signedchar和unsignedchar两种类型,unsignedchar型量的取值范围是0~255,而signedchar型量的取值范围是−127~127。在ANSIC和ISOC中,还规定了sign114当把一个字符常量赋给一个字符变量时,该字符变量的值就是相应字符的编码值。在C语言中字符数据往往可以像整型数据那样进行有关运算。当把一个字符常量赋给一个字符变量时,该字符变115例2-1在ASCII字符集中,字母A的序号为65,分析以下程序的输出结果。#include<stdio.h>main(){charx,y;x='A'+10;y='Z'−20;printf("%c=%d,%c=%d\n",x,x,y,y);return(0);}例2-1在ASCII字符集中,字母A的序116字符数据可以以字符形式输出,也可以用整数形式输出。字符数据可以以字符形式输出,也可以用整数形式117表示基本浮点类型的关键字是float。floatf;C语言中还提供其他两种浮点类型:double和longdouble,分别称作双精度类型和长双精度类型。float量的取值范围是double量的子集,而double量的取值范围又是longdouble量的子集。2.4.3浮点型float表示基本浮点类型的关键字是float。2.4118一般机器上float量占4个字节(32位),double量占8个字节(64位),而longdouble量要占16个字节(128位)。浮点变量可进行的算术运算有下述4种:+−*/一般机器上float量占4个字节(32位)119其运算结果仍是一个浮点量。但大家应注意,取模运算符“%”不能作用于浮点量上。为了保持运算精度,在运算时所有的float量都被转换成double量。其运算结果仍是一个浮点量。但大家应注意,取模120inti=10;floatpi=3.14;doublef;f=i*pi;2.4.4类型转换inti=10;2.4.4类型转换121不同类型的量在一起进行算术运算时需进行类型转换。即:如果一个运算符有两个不同类型的运算分量,那么,在操作之前先将“较低”的类型提升为“较高”的类型,使二者类型统一,然后进行操作;其结果是“较高”类型。而类型的高低是由其属性(取值范围、精度、作用等)来决定的。不同类型的量在一起进行算术运算时需进行类型转122由算术运算符对运算分量自动实施的类型转换称为普通算术转换,也称为隐式转换。由算术运算符对运算分量自动实施的类型转换称为123图2-1算术转换规则图2-1算术转换规则124在进行运算之前,所有char型和short型数据都转换成int型,所有float型数据都转换成double型,从而可以提高运算精度。在赋值语句中,赋值号右边表达式的值的类型要转换成赋值号左边变量的类型。在进行运算之前,所有char型和short型125例如:inti=10;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论