第3章数据类型(新)_第1页
第3章数据类型(新)_第2页
第3章数据类型(新)_第3页
第3章数据类型(新)_第4页
第3章数据类型(新)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章l 本章要点本章要点l 主要内容主要内容3.1 C3.1 C的数据类型的数据类型3.2 3.2 常量与变量常量与变量3.3 3.3 整型数据整型数据3.4 3.4 浮点型数据浮点型数据3.5 3.5 字符型数据字符型数据 3. 3.变量赋初值变量赋初值 3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 3.8 3.8 算术运算符和算术表达式算术运算符和算术表达式 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 3.10 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式 3.1 C的数据类型的数据类型数据?数据?数据类型?数据类型?常量与变量?常量与

2、变量?字符型字符型-char实实 型型单精度型单精度型-float双精度型双精度型-double整型整型-int数数据据类类型型数数据据常量常量 : Constants 变量变量: Variable 3.2 常量与变量常量与变量3.2.1 常量和符号常量常量和符号常量在程序运行过程中在程序运行过程中, ,其值不能被改变的量称为常量其值不能被改变的量称为常量整型整型 100100,125125,-100-100,0 0实型实型 3.14 3.14 , 0.1250.125,-3.789-3.789字符型字符型 a, ba, b,22字符串字符串 a, aba, ab,12321232常量常量例3

3、.1 符号常量的使用#include #include #define PRICE 30#define PRICE 30void main ( )void main ( ) int num, total;int num, total; num = 10;num = 10; total = num total = num * * PRICE; PRICE; printf(total=%dn,totalprintf(total=%dn,total);); 用一个标识符代表一个常量。符号常量的值在其作用域内不能改变,也不能再被赋值。 运行结果:运行结果: total=300total=300 程序中

4、用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算如再用赋值语句给PRICE赋值是错的 PRICE=40;/* 错误,不能给符号常量赋值都是常量都是常量 3.2 常量与变量常量与变量3.2.2变量变量运行中,其值允许改变。运行中,其值允许改变。用类型用类型标识符标识符定义的。定义的。是临时存放数据的是临时存放数据的空间空间。分类:分类:整型、实型、字符型整型、实型、字符型定义变量的方法:定义变量的方法:数据类型数据类型 变量名列表变量名列表; ;intint age; age;floatfloat radius, area; r

5、adius, area; double double distance, speed distance, speed,score;score; 数据类型关键字数据类型关键字变量名,用户自定义标识符变量名,用户自定义标识符组成:组成: 下划线下划线 字母字母 数字数字 _ a-z,A-Z 0-9 标识符:标识符:描写变量描写变量/常量名字符序列,即名字常量名字符序列,即名字变量命名注意事项:变量命名注意事项: 不能用关键字;不能用关键字;intint forfor C C中大小写敏感;中大小写敏感; 尽可能做到见文知义尽可能做到见文知义; ;age, scoreage, scoreSum/sum

6、/SUM-3Sum/sum/SUM-3个不同个不同 数字不能作首字符;数字不能作首字符; 2a2a非法非法main( ) int a, b; a=5; b=6; int sum; sum=a+b; printf(“%dn” , sum); 下面程序是否正确?下面程序是否正确?变量必须先定义后使用变量名要简单明了、见名知意变量名要简单明了、见名知意 定义变量定义变量 int a; 制造容器制造容器 a 不定值不定值a=5; 5a=6; 6printf(“a=%d”,a); 输出输出 a=6注意:注意:a代表存储单元代表存储单元6是存储单元中的内容是存储单元中的内容 3.3 整型数据整型数据3.3

7、.1整型常量的表示方法整型常量的表示方法 整型常量即整常数。在语言中,整常数可用以下三种整型常量即整常数。在语言中,整常数可用以下三种形式表示:形式表示:(1)(1)十进制整数。十进制整数。 如:如:123, -456.4123, -456.4。(2)(2)八进制整数。八进制整数。以以0 0头的数是八进制数。头的数是八进制数。 如:如:01230123表示八进制数表示八进制数123123,等于十进制数,等于十进制数83,-01183,-011表表示八进制数示八进制数-11,-11,即十进制数即十进制数-9-9。(3)(3)十六进制整数。十六进制整数。以以0 x0 x开头的数是开头的数是1616

8、进制数。进制数。 如:如:0 x1230 x123,代表,代表1616进制数进制数123,123,等于十进制数等于十进制数 291291。 - -0 x120 x12等于十进制数等于十进制数1010。 整数类型的有关数据:3.3.2 整型变量整型变量-只能存放只能存放整型数据整型数据以上为在以上为在Visual C+ 编译环境中数据编译环境中数据所占的空间大小所占的空间大小超出取值范围会怎样? 如果在Visual环境中,定义了一个int型数据,但把一个大于2147483647的值赋给它,会如何呢?溢出(Overflow)造成的危害 3.4 浮点型数据浮点型数据3.4.13.4.1浮点型常量的表

9、示方法浮点型常量的表示方法两种表两种表示形式示形式小数小数指数指数0.1230.1233e-33e-3注意注意: :字母字母e(e(或或E)E)之前必须有数字,且之前必须有数字,且e e后面的指数必须为整数后面的指数必须为整数 3.4 浮点型数据浮点型数据3.4.2 浮点型变量浮点型变量 浮点型变量分为单精度(浮点型变量分为单精度(floatfloat型)、双精度型)、双精度(doubledouble型)和长双精度型(型)和长双精度型(long doublelong double)三类)三类形式。形式。#include main()float f; /double f;f = 123.456;

10、if (f = 123.456)printf(f is equal to 123.456 indeed.);elseprintf(In fact, f is equal to %fn, f);以下程序段的运行结果如何?以下程序段的运行结果如何? 3.5 字符型数据字符型数据 3.5.1 字符常量字符常量(1)用单引号包含的一个字符是字符型常量(2)只能包含一个字符a,Aa,A, 1, 1abcabc、“a”a” 3.5 字符型数据字符型数据 有些以有些以“”开头的特殊字符称为转义字符开头的特殊字符称为转义字符字符形式字符形式含义含义ASCII码n换行换行10t水平制表(跳到下一个tab位-8位

11、)9b退一格退一格8r光标移到本行首光标移到本行首13反斜杠字符反斜杠字符92 单撇号单撇号在单引号中再次出现时39 双撇号双撇号-在双引号中再次出现时34例3.5 转义字符的使用#include stdio.h#include void void ()() printfprintf (C:windowssystem (C:windowssysteminfninfn););printfprintf (hello wordn); (hello wordn);printfprintf (char a = An); (char a = An);显示屏上的运行结果:显示屏上的运行结果: C:windo

12、wssysteminf hello word char a = A 3.5 字符型数据字符型数据 3.5.2 字符变量字符变量 字符型变量用来存放字符常量,且只能字符型变量用来存放字符常量,且只能放一个字符放一个字符。 字符变量的定义形式如下:字符变量的定义形式如下:char c1,c2;char c1,c2; 在本函数中可以用下面语句对在本函数中可以用下面语句对c1,c2c1,c2赋值:赋值: c1c1aa;c2c2 b b ; 一个字符变量在内存中占一个字节。一个字符变量在内存中占一个字节。 3.5 字符型数据字符型数据 3.5.3 字符数据在内存中的存储形式及其使用方法字符数据在内存中的

13、存储形式及其使用方法 一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。注意: 一个字符数据既可以以字符形式输出,也可以以整数形式输出。例3.6 向字符变量赋以整数。 #include #include void main()void main() char c1,c2; char c1,c2; c1=97; c1=97; c2=98; c2=98; printf(“%c %cn”,c1,c2); printf(“%c %cn”,c1,c2); printf(“%d printf(

14、“%d %dn”,c1,c2); %dn”,c1,c2); 在第和第在第和第4 4行中,将整数行中,将整数9797和和9898分别赋给分别赋给c1c1和和c2c2,它的作用相当于以下两个赋值语句:它的作用相当于以下两个赋值语句:c1c1;c2;c2; 因为因为aa和和bb的的ASCIIASCII码为码为9797和和9898运行结果:运行结果: 97 9897 98例3.7 大小写字母的转换 #include stdio.h#include void main()void main() char c1,c2 char c1,c2; c1=a;c1=a; c2=b; c2=b; c1=c1-32;

15、 c1=c1-32; c2=c2-32; c2=c2-32; printf printf(“(“c c cc,c1,c2c1,c2);); 程序的作用是将两个小写字母程序的作用是将两个小写字母a a和和b b转换成大转换成大写字母写字母A A和和B B。从代码表中可以看到每一。从代码表中可以看到每一个小写字母比它相应的大写字母的个小写字母比它相应的大写字母的ASCIIASCII码大码大3232。语言允许字符数据与整数直接进行算术运算。语言允许字符数据与整数直接进行算术运算。 运行结果:运行结果: 3.5 字符型数据字符型数据3.5.4字符串常量字符串常量 字符串常量是一对字符串常量是一对双撇号

16、双撇号括起来的字符序列括起来的字符序列. . 合法的字符串常量合法的字符串常量: :“How do you do.”, “CHINA”How do you do.”, “CHINA”, “ “a” a” , “$123.45”$123.45” 可以输出一个字符串,如可以输出一个字符串,如printf(“Howprintf(“How do you do.”) do you do.”); 3.5 字符型数据字符型数据 是字符常量,是字符常量,”是字符串常量,二者不是字符串常量,二者不同。同。 如:如:假设被指定为字符变量假设被指定为字符变量 :char cchar cc=a; ”a”;c”CHIN

17、A”; 结论:结论:不能把一个字符串常量赋给一个字符变量。不能把一个字符串常量赋给一个字符变量。 规定:在每一个字符串常量的结尾加一个规定:在每一个字符串常量的结尾加一个 “ “字符串结束字符串结束标标志志”,以便系统据此判断字符串是否结束。规定以字符,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。作为字符串结束标志。 如:如:如果有一个字符串常量如果有一个字符串常量” ” ,实际上在内存中是:,实际上在内存中是:CHINA0 它占内存单元不是个字节,而是个字节,最后一个它占内存单元不是个字节,而是个字节,最后一个字符为字符为。但在输出时不输出。但在输出时不输出。 3.5 字符

18、型数据字符型数据 3.6 变量赋初值变量赋初值 (1)(1)语言允许在定义变量的同时使变量初始化语言允许在定义变量的同时使变量初始化如如: : intint a=3; / a=3; / 指定为整型变量,初值为指定为整型变量,初值为 float f=3.56; / float f=3.56; / 指定为浮点型变量,初值为指定为浮点型变量,初值为.56 .56 char c=a; / char c=a; / 指定为字符变量,初值为指定为字符变量,初值为aa(2)(2)可以使被定义的变量的一部分赋初值。可以使被定义的变量的一部分赋初值。如如: : int a,b,cint a,b,c=5=5; 表示

19、指定、为整型变量,但表示指定、为整型变量,但只对初始化,只对初始化,c c的初值为的初值为 3.6 变量赋初值变量赋初值 (3)(3)如果对几个变量赋以同一个初值,如果对几个变量赋以同一个初值, 应写成:应写成:intint a=3,b=3,c=3; a=3,b=3,c=3; 表示、表示、的初值都是。的初值都是。 不能写成不能写成 int int a=b=c=3; a=b=c=3;char *stu_name = “Mike”; int stu_age = 19; /学生年龄int stu_score = 78; /成绩取值0100工程中习惯的写法:工程中习惯的写法: int a = 3; i

20、nt b = 3; int c = 3; 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 floatlongchar转转换换方方向向charfloatintdouble 3.8 算术运算符和算术表达式算术运算符和算术表达式注意:注意:%的分子分母必须都为整型数据的分子分母必须都为整型数据数学中的数学中的“ ”、“ ”用多层用多层“( )” 代代替替一般形式一般形式: :(类型名)(表达式)(类型名)(表达式)例如:例如:(double)(double) 将转换成将转换成doubledouble类型类型(int)(x+y(int)(x+y) ) 将将x+yx+y的值转换成整型的值转

21、换成整型(float)(float)(5%35%3) 将将5%35%3的值转换成的值转换成floatfloat型型(3)(3)强制类型转换运算符强制类型转换运算符类型强转类型强转指针指针 作用是使变量的值增或减作用是使变量的值增或减如如: (在使用之前,先使的值加(在使用之前,先使的值加 (减)(减)在使用之后,先使的值加在使用之后,先使的值加 (减)(减)(4) (4) 自增、自减运算符自增、自减运算符例如:例如:i的原值等于的原值等于3 ; i的值先变成的值先变成4, 再赋给再赋给,j的值均为的值均为 ; 先将先将 i的值的值3赋给赋给,的值为,然后变为的值为,然后变为 自增(减)运算符常

22、用于自增(减)运算符常用于循环语句循环语句中使循环变量中使循环变量自动加,也用于自动加,也用于指针变量指针变量,使指针指向下一个地,使指针指向下一个地址。址。void main() int i =2; int j=1; +j; j = i + j; i +; printf (i=%d, j=%dn,i, j); void main() int i =2; int j=1; j = i+(+j); printf (i=%d,j=%dn,i,j); 输出结果:输出结果:i=3, j=4这样的写这样的写法你自己法你自己还懂吗?还懂吗? 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 = +=

23、-= *= /= %= 简单赋值运算符简单赋值运算符 复合赋值运算符复合赋值运算符 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 赋值表达式中的赋值表达式中的“表达式表达式”,又可以是一个赋值表,又可以是一个赋值表达式。达式。例如例如: : 1. 1. a=(b=5)a=(b=5) 2.2.(a=3(a=3* *5)=45)=4* *3 3 3.3. a+=a-=a a+=a-=a* *a a正确,但非标准的写法!正确,但非标准的写法!1. 1. b=5b=5 a=ba=b2. 2. a=3 a=3* *5 5 a=4 a=4* *3 33. 3. a=a-a a=a-a* *a a a=a+a a=a+a 此为标准写法!此为标准写法!尽量不要多个赋值符号尽量不要多个赋值符号连用!连用!请判断以下程序段的输出结果请判断以下程序段的输出结果#include void main()int x = 3; / 0011int y = 15; / 1111if (x & y = 3)printf (okn);elseprintf (failedn);1.以下选项中不合法的标识符是()。以下选项中不合法的标识符是()。 A)print B)For C)&a D)-00 2.以下选项中不属于字符常量的是()。以下选项中不属于字符常量的是()

温馨提示

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

最新文档

评论

0/150

提交评论