《C语言21基本数据类型.ppt》由会员分享,可在线阅读,更多相关《C语言21基本数据类型.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章 数据类型 第2次课主要内容n一、变量及常量n二、C语言基本数据类型n三、程序中的运算n四、数据的控制台输入和输出(2.4)n实验要求一、常量与变量一、常量与变量#include stdio.h#define PI 3.14159main()float r;float area;r=2;area=PI*r*r;printf(area=%fn,area);if(sex=f|sex=F)if(age=55)printf(She is retire.n);else printf(She is working.n);程序中处理的程序中处理的数据有不同的类型数据有不同的类型,数据表达的方式可以
2、有,数据表达的方式可以有常量常量,可以有可以有变量变量实数实数字符及字符串字符及字符串变量定义,必须先定义后引用变量定义,必须先定义后引用定义形式:数据类型定义形式:数据类型 变量名变量名表;表;/*示例ch3_001:变量*/#include stdio.hmain()int r;float area;r=2;area=3.14159*r*r;r=4;area=3.14159*r*r;printf(area=%fn,area);一、常量与变量一、常量与变量rarea21、变量程序中值可以改变的量注意:注意:中间没有中间没有“=”结尾没有结尾没有“;”/*示例2:直接常量直接常量直接常量直接常
3、量*/#include stdio.h#include conio.hmain()int r;float area;r=2;area=3.14159*r*r;r=4;area=3.14159*r*r;printf(area=%fn,area);getch();一、常量与变量一、常量与变量直接常量直接常量/*示例3:符号常量符号常量符号常量符号常量*/#include stdio.h#define PI 3.14159main()int r;float area;r=2;area=PI*r*r;r=4;area=PI*r*r;printf(area=%fn,area);getch();符号常量符
4、号常量二、常量:程序中固定不变的数据一、常量与变量一、常量与变量n常量的类型:常量的类型:n整型:整型:n实型实型n字符型字符型n字符串型字符串型/*ch3_002.c 整型常量整型常量*/#include stdio.h“void main()int a,b,c;a=11;b=011;c=0 x11;printf(a=%d,b=%d,c=%dn,a,b,c);整型十进制常量整型十进制常量整型八进制常量整型八进制常量整型十六进制常量整型十六进制常量%d代表输出的格式代表输出的格式是十进制整数形式是十进制整数形式一、常量与变量一、常量与变量n常量的类型:常量的类型:n整型:整型:n实型实型n字符
5、型字符型n字符串型字符串型指数形式指数形式/*ch3_003.c 实型常量实型常量*/#include stdio.h“void main()float x,y,z;x=12.342;y=1.234e-5;z=-12E-2;printf(a=%f,b=%f,c=%fn,x,y,z);%f代表输出的格式是浮点形代表输出的格式是浮点形式,默认小数点尾数式,默认小数点尾数6位位一、常量与变量一、常量与变量n常量的类型:常量的类型:n整型:整型:n实型实型n字符型字符型n字符串型字符串型/*ch3_004.c 字符型常量字符型常量*/#include stdio.h”void main()char c
6、1,c2;c1=a;c2=a-32;printf(c1=%c,c2=%cn,c1,c2);%c代表输出的格式是字符形式代表输出的格式是字符形式 printf(c1=%d,c2=%dn,c1,c2);字符常量以单引号定界字符常量以单引号定界!表示以十进制整数形式输出对应表示以十进制整数形式输出对应字符的字符的ASCII值值一、常量与变量一、常量与变量n常量的类型:常量的类型:n整型:整型:n实型实型n字符型字符型n字符串型字符串型/*ch3_005.c 字符串常量字符串常量*/#include stdio.h”void main()printf(Turbo C);字符串常量以字符串常量以双引号双
7、引号双引号双引号定界定界!一、常量与变量一、常量与变量n编译程序在每个字符串的后面自动加上编译程序在每个字符串的后面自动加上0以示结束。以示结束。n字符串”Visual C+”共有11个字符,除本身10个(空格也算一个)外,还加上0。n“x”与 x的不同点:n“x”在存储的时候会占2个字节nx只由1个字节一、常量与变量一、常量与变量nC语言中没有字符串变量类型n字符型数据只能存储于字符型变量中,例如,char max=”How are you doing!”,这样的语句使用是错误的。n如果要存储字符串数据的话,那么只能如果要存储字符串数据的话,那么只能以以字符数组字符数组或或指针形式指针形式实
8、现。实现。一、常量与变量一、常量与变量n特殊的字符常量特殊的字符常量=90)grade=A;printf(score=%f,grade=%cn,score,grade);1.数据类型反映了数据内在的一些属性。数据类型反映了数据内在的一些属性。2.数据类型决定:数据类型决定:1).数据占内存字节数数据占内存字节数 2).数据取值范围数据取值范围 3).其上可进行的操作(运算)其上可进行的操作(运算)数据类型一览表数据类型一览表 C语言提供了丰富的数据类型,其主要包括二、数据类型二、数据类型 数据类型字节数数据范围整型(int)4-21474836482147483647实型(float)43.4
9、E-383.4E+38字符(char)10255双精度型(double)81.7E-3081.7E+308基本类型所占存储空间字节数及数据范围基本类型所占存储空间字节数及数据范围 二、数据类型二、数据类型 数数据据类类型型int、float、char和和double可可以以带有各种修饰前缀。带有各种修饰前缀。signed表示数据是有符号的表示数据是有符号的unsigned表示数据是无符号的表示数据是无符号的long表示数据是表示数据是“长长”的的short表示数据是表示数据是“短短”的的修修饰饰符符可可以以与与基基本本类类型型相相组组合合,结结果果如如下下表:表:二、二、数据类型数据类型 类类
10、型型字字节节数数取取值值范范围围说说明明int4-21474836482147483647signed short int2-3276832767有符号短整型数,有符号短整型数,简简写写为为short或或int,字,字长长为为2个字个字节节共共16位的二位的二进进制数制数signed long int4-21474836482147483647有符号有符号长长整型数,整型数,简简写写为为long,字,字长为长为4个个字字节节共共32位的二位的二进进制数制数unsigned short int2065535无符号短整型数,无符号短整型数,简简写写为为unsigned int,字,字长为长为2个字
11、个字节节共共16位的二位的二进进制数制数unsigned long int404294967295无符号无符号长长整型数,整型数,简简写写为为unsigned long,字,字长为长为4个字个字节节共共32位的二位的二进进制数制数float43.4E-383.4E+38约约7位有效数字位有效数字char10255unsigned char10255无符号字符,可无符号字符,可简简写写为为charsigned char1-128127有符号字符有符号字符double81.7E-3081.7E+308约约17位有效数字,位有效数字,7位精度位精度long double10可以可以简简写写为为dou
12、ble注意:不同系统及不同版本的C,在各种类型长度上有差异!二、二、数据类型数据类型/*ch3_009数据溢出的错误*/#include stdio.hvoid main()int a;a=3400000000;printf(a=%dn,a);超过了整数的范围上溢出由于不同数据类型所占据的存储空间不同,在定义变量的类型时应充分考虑变量的取值范围。例如,整型(int)类型的变量取值范围为-232 232-1。如果在运算中,数值超出这个范围则称为溢出,大于232-1称为上溢,小于-232称为下溢 二、二、数据类型数据类型n请大家分析,以下程序输出结果正确么?#include stdio.hvoid
13、 main()short int a;a=32768;printf(a=%dn,a);#include stdio.hvoid main()unsigned short int a;a=32768;printf(a=%dn,a);/*ch3_009数据溢出的错误*/三、程序中的运算三、程序中的运算运算符与表达式运算符与表达式n1.算术运算符算术运算符n2.赋值运算符赋值运算符n3.关系运算符关系运算符n4.逻辑运算符逻辑运算符n5.条件运算符条件运算符n6.逗号运算符逗号运算符n运算中的类型转换运算中的类型转换本书本书3.2本书1.3本书略三、程序中的运算三、程序中的运算运算符与表达式运算符与
14、表达式1.算术运算符算术运算符n双目(二元)双目(二元)运算符运算符+-*/%n单目(一元)运算符单目(一元)运算符+-+-n改变优先级()改变优先级()#include stdio.hvoid main()int a,b,c;a=10;b=3;c=a/b;printf(c=%dn,c);C=3#include stdio.hvoid main()float a,b,c,;a=10.0;b=3.0;c=a/b;printf(c=%fn,c);C=3.333333注意:注意:/的两个操作数如果为同种类型,结果也是同样的类型,的两个操作数如果为同种类型,结果也是同样的类型,1/2=1/2=等于?等
15、于?%只能用于两个整数之间!只能用于两个整数之间!10%3 10%3结果为结果为1 1例例ch3_010.c 算术运算示例算术运算示例三、程序中的运算三、程序中的运算求余运算符“%”要求左操作数和右操作数都是整数,运算结果是两个操作数相除的余数。求余运算符求余运算符“%”三、程序中的运算三、程序中的运算n单目运算符单目运算符+-n例例ch3_011.c 示例示例+-/*ch3_011.C 算术运算符算术运算符+、-示例示例*/main()int a=1,b;b=a+;printf(b=%d,a=%dn,b,a);b=1,a=2main()int a=1,b;b=+a;printf(b=%d,a
16、=%dn,b,a);b=2,a=2注意:注意:1.+1.+和和只能作用于变量,不能用于常量及表达式!只能作用于变量,不能用于常量及表达式!2.+-2.+-若为后缀,则先计算,后自加(减);若为后缀,则先计算,后自加(减);+-若为前缀,则先自加(减),后计算若为前缀,则先自加(减),后计算练习:练习:j=3 j=3,i=2;k=+j/i+;i=2;k=+j/i+;/j=4,i=3,K=2案例案例ch3_012ch3_012三、程序中的运算三、程序中的运算示例示例ch3_013ch3_013单目运算单目运算+-三、程序中的运算三、程序中的运算运算符与表达式运算符与表达式n1.算术运算符算术运算符
17、n2.赋值运算符赋值运算符n3.关系运算符关系运算符n4.逻辑运算符逻辑运算符n5.条件运算符条件运算符n6.逗号运算符逗号运算符n运算中的类型转换运算中的类型转换注意:赋值号左边只能是变量名,不能是常量、表达式。注意:赋值号左边只能是变量名,不能是常量、表达式。三、程序中的运算三、程序中的运算2.赋值运算符赋值运算符n简单赋值运算简单赋值运算=n复合赋值运算符复合赋值运算符+=,-+,*=,/=,%=,&=,=,|=n改变优先级()改变优先级()三、程序中的运算三、程序中的运算n简单赋值运算简单赋值运算=例ch3_014:ab5c55三、程序中的运算三、程序中的运算n复合赋值运算符复合赋值运
18、算符(10个)个)+=,-+,*=,/=,%=,&=,=,|=/ch3_015复合赋值运算符示例复合赋值运算符示例#include stdio.hvoid main()int j=3,i=2;i+=3;j+=i;printf(j=%dn,j);i+=3相当于相当于i=i+3j+=i 相当于相当于j=j+i;思考:思考:int j=3 int j=3,i=2,k=1;i=2,k=1;k-=j-=i;k-=j-=i;运算之后运算之后 i,j,k i,j,k 2 1 0三、程序中的运算三、程序中的运算例ch3_016:复合赋值运算示例三、程序中的运算三、程序中的运算运算符与表达式运算符与表达式n1.
19、算术运算符算术运算符n2.赋值运算符赋值运算符n3.关系运算符关系运算符n4.逻辑运算符逻辑运算符n5.条件运算符条件运算符n6.逗号运算符逗号运算符 n运算过程中的类型转换运算过程中的类型转换本书在3.2节讲解!本书略运算过程中的类型转换运算过程中的类型转换在表达式中进行运算时,通常会将不同类型的数据混合使用,此时就会关系到类型转化的问题。一般转换规则:“短”长“长”短“则会截断,丢失精度即:由占存储空间少的数据类型向占存储空间多的由占存储空间少的数据类型向占存储空间多的数据类型转换。数据类型转换。doublefloatlongunsignedintchar,short短长例 char ch
20、;int i;float f;double d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledoubled=f=i=10;i=f=100000;例 int i;float f;double d;long l;横向箭头表示必定的横向箭头表示必定的转换转换纵向箭头表示运算对纵向箭头表示运算对象为异类型时的转换象为异类型时的转换运算过程中的类型转换运算过程中的类型转换类型转换:第一类:自动转换(隐式转换)char c;c=a-32;隐式转换隐式转换1:运算转换,:运算转换,int a=5,b=3;float c;c=a%b;隐式转换隐式转换
21、2:赋值转换:赋值转换int a=5,b=3;printf(“%fn”,a-b);隐式转换隐式转换3:输出转换:输出转换运算过程中的类型转换运算过程中的类型转换float a=5,b=3;int c;c=(int)a%(int)b;强制类型转换强制类型转换一般形式:一般形式:(类型名类型名)(表达式)表达式)例例 (int)(x+y)(int)x+y (double)(3/2)(int)3.6 int a=5,b=3;float c;c=(float)a/b;强制类型转换强制类型转换程序设计中有时需要将表达式的值转换为某一特定类型时,自动转换不一定能产生正确的结果。运算过程中的类型转换运算过程
22、中的类型转换Ch3_017强制类型转换运算过程中的类型转换运算过程中的类型转换n请大家分析下面程序中所包含的类型转换:#include stdio.hvoid main()float x=4.5,y=1.5;printf(%f,(x+y)/3-(int)x%(int)y);综合练习ch3_018求2x2+10 x+9=0的根。课堂练习n已知华氏温度转换为摄氏温度的公式如下:其中C为摄氏温度,F为华氏温度,编写程序将任意的华氏温度转换为摄氏温度输出:main()int F,C;F=300;C=5/9(F-32);printf(“%dn”,c);请问程序中有几处错误?如何修改?95(F-32)C=