C语言数据类型与基本操作.ppt
《C语言数据类型与基本操作.ppt》由会员分享,可在线阅读,更多相关《C语言数据类型与基本操作.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、q常量和变量q标识符与关键字q整型数在计算机中的存储方式q有符号的数据类型和无符号的数据类型q运算符及表达式q不同类型数据间的转换第二章第二章 C C语言数据类型与基本操作语言数据类型与基本操作1数据类型 数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作数据数据类型类型构造类型构造类型指针类型指针类型空类型空类型字符类型字符类型 char枚举枚举整型整型实型实型单精度单精度双精度双精度短整型短整型长整型长整型整型整型数组数组结构体结构体共同体共同体基本基本类型类型数值数值类型类型2基本类型类型关键字取值范围 位数(signed)int16-3276832767(signe
2、d)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535float321e-371e38double641e-3071e308char8说明:数据类型所占位数随机器硬件不同而不同,上表以微机为例:long double 80 1e-49311e4932字符型浮点型整 型3q整型常量 十进制十进制:例 15,19,123,-345,0 八进制八进制:以 0(零)开头的整数,例 0123,011 十六进制十六进
3、制:以 0 x 或 0X 开头的整数,例 0 x123,0Xff注注:用 l或 L表示一个数是长整型,例 123L;无符号数用 u 或 U表示,无符号长整型用 ul 或 UL 表示,例:123u,0 xful问题:0123 =()100 x123=()100Xff =()1083291255问题:0123 =()100 x123=()100Xff =()10例 12 与 12L例 30000 为int型 65536 为long int 型2.1 常量与变量4q实型常量 格式格式:(必须有小数点)例 0.123,.123,123.0,0.0,123.指数格式指数格式:(必须有 数字 在 e 或
4、E的前面;指数 必须是 整型)例:12.3e3,123E2,1.23e4,e-5 ,注:注:用 f 或 F 注明是单精度,用l 或 L 注明是长双精度,没有注明则是 双精度.5q字符常量和转义字符用单撇号括起来的一个字符;一个字符的值可用ASCASC数值表示;如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例:A-101-x41-65如 A65,a97,048,n10如 a A?n 101特殊形式的字符常量就是以一个“”开头的字符序列,称为转转义字符。例:nn(换行);例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101
5、x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CI say:”How are you?”C ProgramTurbo C例 main()printf(Yb=n);运行结果:屏幕显示:¥转义字符及含义:转义字符及含义:垂直制表 tab位v16进制代表的字符xhh水平制表Tab位t8进制代表的字符ddd回车r双撇换行 n单撇换页f输出结果加?号标记?退格b反斜杠响铃 a6例 符号常量举例(ch2_1.c)#define PRICE 30main()int num,total
6、;num=10;total=num*PRICE;printf(total=%d,total);运行结果:total=3008编译程序根据变量定义为其分配指定字节的内存单元.addressint a=1,b=-3,c;abc2 bytes2 bytes2 bytesaddressaddress.内存1-3随机数变量 变量 及 赋值 定义变量:数据类型 var1,var2,var n;一个变量可以边定义边赋值;例:int a,b,c;float data;变量类型决定变量所占存储空间大小变量名例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1
7、,z=1;int x=y=z=1;所有变量必须先定义后使用。.例1 int student;stadent=19;/Undefined symbol statent in function main 例2 float a,b,c;c=a%b;/illegal use of floating point in function main 一般在函数开始部分定义.main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(data=%fn,data);变量定义可执行语句main()int a,b=2;a=1;float data;data=(a+b)*
8、1.2;printf(data=%fn,data);3a变量名变量名值值存储单元存储单元9&整型变量占 2 字节bytes;shortintlongsizeof(type)求字节数&实型变量单精度:占 4 bytes,7 位有效数值双精度:占 8 bytes,1516位有效数值&字符变量 以 ASC ASC 字符集中的数值保存在内存中字符集中的数值保存在内存中;字符可以当作一般整型数来处理字符可以当作一般整型数来处理.例 float a;a=111111.111;/*a=111111.1*/double b;b=111111.111;/*b=111111.111*/例 a=D;/*a=68;*
9、/x=A+5;/*x=65+5;*/s=!+G /*s=33+71;*/C程序 中没有 字符串变量10例#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(total=%f,ch1=%cn,total,ch1);定义符号常量 定义变量输出运行结果:total=37.500000,ch1=d112.2 标识符和关键字-标识符一个标识符可由字母、数字和下划线组成 ;必须用字母或下划线开头;大小写要区分;不能用保留关键字作变量名;避免混淆的字母;例如:l 与
10、I,o 与 0.例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$1231232 个关键字:(由系统定义,不能重作其它定义由系统定义,不能重作其它定义)auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef uns
11、igned union voidvolatile while-关键字132.3 整型数在计算机中的存储方式1.二进制位与字节二进制位与字节 计算机系统的内存储器,是由许多称为字节的单元组成的,1个字节由8个二进制位(bit)构成,每位的取值为0/1。最右端的那1位称为“最低位”,编号为0;最左端的那1位称为“最高位”,而且从最低位到最高位顺序,依次编号。图11-1是1个字节各二进制位的编号。图11-1 1个字节各二进制位的编号2.数值的原码表示数值的原码表示数值的原码表示是指,将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值(以二进制形式表示)的表示形式。为简化描述起
12、见,本节约定用1个字节表示1个整数。76543210142.3 整型数在计算机中的存储方式例如,+9的原码是00001001 符号位上的0表示正数 -9的原码是10001001。符号位上的1表示负数 3.数值的反码表示数值的反码表示数值的反码表示分两种情况:(1)正数的反码:与原码相同。例如,+9的反码是00001001。(2)负数的反码:符号位为1,其余各位为该数绝对值的原码按位取反(1变0、0变1)。例如,-9的反码:因为是负数,则符号位为“1”;其余7位为-9的绝对值+9的原码0001001按位取反为1110110,所以-9的反码是11110110。152.3 整型数在计算机中的存储方式
13、4.数值的补码表示数值的补码表示数值的补码表示也分两种情况:(1)正数的补码:与原码相同。例如,+9的补码是00001001。(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。例如,-9的补码:因为是负数,则符号位为“1”;其余7位为-9的绝对值+9的原码0001001按位取反为1110110;再加1,所以-9的补码是11110111。已知一个数的补码,求原码的操作分两种情况:(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位不变,其余各位取反,然后再整个数加1。162
14、.3 整型数在计算机中的存储方式例例如如,已已知知一一个个补补码码为为11111001,则则原原码码是是10000111(-7):因因为为符符号号位位为为“1”,表表示示是是一一个个负负数数,所所以以该该位位不不变变,仍仍为为“1”;其其余余7位位1111001取取反反后后为为0000110;再再加加1,所所以以是是10000111。5.数值在计算机中的表示数值在计算机中的表示补码补码在在计计算算机机系系统统中中,数数值值一一律律用用补补码码表表示示(存存储储),原原因因在在于于:使使用用补补码码,可可以以将将符符号号位位和和其其它它位位统统一一处处理理;同同时时,减减法法也也可可按按加加法法
15、来来处处理理。另另外外,两两个个用用补补码码表表示示的的数数相相加加时时,如如果果最最高位(符号位)有进位,则进位被舍弃。高位(符号位)有进位,则进位被舍弃。原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000(用一字节表示数)(用一字节表示数)172.4 有符号的数据类型和无符号的数据类型类型类型类型标识符类型标识符长度长度取值范围及精度取值范围及精度字符字符型型signed char8-128+127unsigned cha
16、r80255整整 形形signed short int16-32768+32767unsigned short int16065535signed long int32-2 147 483+2 147 647unsigned long int3204 294 967 295实实 型型Float32约约(3.410-383.41038),6位位精度精度Double64约约(1.710-3081.710308),16位精度位精度表2.3基本数据归纳18w2.5 运算符及表达式 算术算术运算符运算符:+-*/%+-+-*/%+-关系关系运算符运算符:=!=!=逻辑逻辑运算符运算符:!&|&|位位运算
17、符运算符:|&|&赋值赋值运算符运算符:=+=-=+=-=条件条件运算符运算符:?:?:逗号逗号运算符运算符:,地址地址运算符运算符:*&*&求字节数求字节数运算符运算符:sizeofsizeof强制类型转换:强制类型转换:(type-name(type-name)分量分量运算符运算符:.-.-下标下标运算符运算符:其他其他 :()-()-19q赋值运算符和复合赋值运算符及表达式简单的赋值运算 =变量变量 =表达式表达式复合的赋值运算符+=-=*=/=%=&=|=变量变量1 1 操作符操作符=表达式表达式2 2 变量变量1 1=变量变量1 1 操作符操作符 表达式表达式2 2a+=3a=a+3
18、x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3;a=3;d=func();d=func();c=d+2;c=d+2;20q算术运算符及表达式运算符:+-*/%(*/%(取余取余)+(自增)自增)-(自减)(自减)运算规律运算规律 :从左至右:从左至右优先级优先级 :%-*/*/-+-+-(1)(2)(3)(1)(2)(3)注:注:两个整数两个整数 /是是 整型整型;两个整数两个整数%是是 整型整型.例 5/2 =-5/2 =例 5%2 =-5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2 =-2 (向零取整)例 5%2 =1 -5%2 =-1 1%10 =1
19、5%1 =0 5.5%2 ()21自增、自减运算符 +-+-自增、自减在变量前面在变量前面:+i,-i+i,-i(在表达式中,先自加(自减)后用其值在表达式中,先自加(自减)后用其值)在变量后面在变量后面:i+,i-i+,i-(在表达式中,先用其值再自加(自减)在表达式中,先用其值再自加(自减))例 j=3;k=+j;j=3;k=+j;j=3;k=j+;j=3;k=j+;j=3;printf(j=3;printf(%d%d,+j);,+j);j=3;printf(j=3;printf(%d%d,j+);,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(+a)*b;a=3;b=5
20、;c=(a+)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k=4,j=4/k=3,j=4k=3,j=4/4 4/3 3/c=20,a=4c=20,a=4/c=15,a=4c=15,a=422 注意:只针对变量,而不针对常量和表达式;不要产生只针对变量,而不针对常量和表达式;不要产生二义性;运算规律是自右至左。二义性;运算规律是自右至左。如如 8+(x*y)+8+(x*y)+j=-(+k);k=4 j=-4 j=-(k+);k=4 j=-3 例例 k=3;k=3;j=-+k;j=-+k;j=-k+;j=-k+;v解决办法解决办法1.1.避免在同一表达式中的同一变量的自加自减避免在同
21、一表达式中的同一变量的自加自减.例例:i=3;:i=3;y=(i+)+(i+)y=(i+)+(i+)y=6 i=5 y=3+3;i+;i+;y=6 i=5 y=3+3;i+;i+;y=7 i=5 y=3+4;i+;y=7 i=5 y=3+4;i+;232.2.不使用连续运算符,用括弧分隔。不使用连续运算符,用括弧分隔。例例1:i=3;j=1;x=i+j;1:i=3;j=1;x=i+j;例例3:i=3;printf(3:i=3;printf(%d,%d%d,%d,i,i+);,i,i+);x=i+(+j);x=5 i=3 j=2 x=i+(+j);x=5 i=3 j=2 x=(i+)+j;x=4
22、 i=4 j=1 x=(i+)+j;x=4 i=4 j=1 例例2:i=3;j=1;x=i-+j;2:i=3;j=1;x=i-+j;等价于等价于 x=i-(+j);x=1 i=3 j=2 x=i-(+j);x=1 i=3 j=2可能输出可能输出:3,3 :3,3 4,3 4,33.3.在函数调用时,实参的求值顺序在函数调用时,实参的求值顺序C C无统一规定无统一规定.24注:注:运算顺序:右-to-左操作符左边只能是 变量,不能是常量和 表达式高到低转换数据有可能丢失例 3=x-2*y;a+b=3;例 float f;int i;i=10;f=i;则 f=10.0例 int i;i=2.56;
23、/结果i=2;例:a=b=c=5 a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2类型不一致,数值型和字符型会自动转换。例:a=12;a+=a-=a*a例:int a=2;a%=4-1;a+=a*=a-=a*=3;/a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)25q长度测试运算符sizeof长度测试运算符sizeof可用来测试某个类型的变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据类型 基本 操作
限制150内