1、常量与变量C的数据类型整型、实型、字符型数据不同类型数据间的转换运算符和表达式2.0 C C 的数据类型的数据类型语言程序设计 第二章数据类型CC C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void字符型字符型 char整整 型型实实 型型单精度型单精度型 float双精度型双精度型 double数组类型数组类型结构体类型结构体类型共用体类型共用体类型短整型短整型 short长整型长整型 long整型整型 int枚举类型枚举类型 enum常量常量v定义:程序运行过程中,其值不能被改变的量。定义:程序运行过程中,其值不能被改变的量。v分类分类:语言程序设计
2、第二章数据类型C2.1 常量与变量类型类型示例示例整型常量整型常量12、0、-3实型常量实型常量4.6、-1.23字符常量字符常量a、b 符号常量符号常量PRICE、PAIl符号常量符号常量:用用标识符标识符代表常量代表常量u一般用大写字母:一般用大写字母:PRICE、PIu定义格式:定义格式:#define 符号常量符号常量 常量常量例例2.1 符号常量举例符号常量举例#define PRICE 30#include void main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);语言程序设计 第二章数据类型Cto
3、tal=300运行结果:运行结果:变量变量v 定义:定义:其值可以改变的量。其值可以改变的量。v 定义格式:定义格式:数据类型数据类型 变量名;变量名;语言程序设计 第二章数据类型Ca3例例 变量的使用变量的使用#include void main()int a;a=3;printf(a=%d,a);变量名变量名变量值变量值存储单元存储单元标识符标识符v定义:标识变量名、符号常量名、函数名、数组名定义:标识变量名、符号常量名、函数名、数组名 的字符序列。的字符序列。v命名规则:命名规则:l只能由只能由字母、数字、下划线字母、数字、下划线组成,且组成,且第一个符号第一个符号必须是字母或下划线必须
4、是字母或下划线l大小写敏感大小写敏感l不能使用不能使用关键字关键字l长度不能过长长度不能过长语言程序设计 第二章数据类型Csum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123M.D.John3days#33char$123ab语言程序设计 第二章数据类型C以下含有几个非法标识符以下含有几个非法标识符答案是:答案是:个个 你答对了吗?你答对了吗?C语言中,变量必须先定义,后使用!例例 变量的使用变量的使用#include void main()a=3;printf(a=%d,a);int a;
5、2.2 整型数据C语言程序设计 第二章数据类型C整型常量(整常数)整型常量(整常数)v三种表示方法:三种表示方法:l十进制整数:由数字十进制整数:由数字0 09 9和正负号表示和正负号表示.如如 123,-456,0123,-456,0l八进制整数:由数字八进制整数:由数字0 0开头开头,后跟数字后跟数字0 07 7表示表示.如如 0 0123,123,0 01111l十六进制整数:由十六进制整数:由0 x0 x开头开头,后跟后跟0 09,a9,af,Af,AF F表示表示.如如 0 x0 x123,123,0 x0 xffffC语言程序设计 第二章数据类型C例例2.2 整型数据的溢出整型数据
6、的溢出#include void main()short int a,b;a=32767;b=a+1;printf(%d,%d n,a,b);32767,-32768 VC运行结果:运行结果:整型数据的溢出2.3浮点型数据(实数型)C语言程序设计 第二章数据类型C浮点常量(实数或浮点数)浮点常量(实数或浮点数)v两种表示方法:两种表示方法:l十进制小数形式:十进制小数形式:必须有小数点必须有小数点 如如 0.123 0.123、.123.123、123.0 123.0、0.0 0.0、123.123.l 指数形式:指数形式:e e或或E E之前必须有数字;指数之前必须有数字;指数必须为必须为整
7、数整数 如如 123.456e0123.456e0、12.3456e1 12.3456e1、1.23456e2 1.23456e2、0.123456e3 0.123456e3、0.0123456e4 0.0123456e4 等等1.23456e2 1.23456e2 称为称为“规范化的指数形式规范化的指数形式”6.28e-2 表示表示 6.28 10-2-3.0824e4 表示表示 3.0824 10 4v浮点型变量量的类型及其定义格式浮点型变量量的类型及其定义格式l单精度单精度 floatfloat 型,型,3232位,位,6 67 7位有效数字位有效数字l双精度双精度 doubledoub
8、le 型,型,6464位,位,15151616位有效数字位有效数字l长双精度长双精度long doublelong double型,型,128128位,位,18181919位有效数字位有效数字(vcvc下)下)C语言程序设计 第二章数据类型C例例2.3 实型数据的舍入误差实型数据的舍入误差#include void main()float a,b;a=123456.789e5;b=a+20;printf(%f,b);2.4 字符型数据C语言程序设计 第二章数据类型C字符常量字符常量v定义定义:用用单引号单引号括起来的括起来的单个单个字符字符或或控制字符控制字符.v 字符常量的字符常量的值值:该
9、字符的:该字符的ASCIIASCII码值码值如如 a A n t 如如 a97 a97,A65A65 n10,t9 n10,t9C语言程序设计 第二章数据类型Cv控制字符(控制字符(转义字符转义字符):反斜线后面跟一个字符或一个反斜线后面跟一个字符或一个代码值表示代码值表示 转义字符及其含义列表转义字符及其含义列表转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符例例2.4 转义字
10、符的使用转义字符的使用#include void main()printf(“hellonthenworld!n);C语言程序设计 第二章数据类型ChellotheWorld!运行结果:运行结果:字符变量定义格式:定义格式:char char 变量名变量名如:如:char text1,text2,text3;char text1,text2,text3;text1=A;text1=A;text2=apple;text2=apple;text3=65;text3=65;字符数据在内存中 的存储形式存储该字符的ASCII码(P14)如:char chA;char ch=65 char ch=65
11、与与 char ch=A char ch=A 是等效的是等效的字符型数据与部分整型数据可相互转换字符型数据与部分整型数据可相互转换C语言程序设计 第二章数据类型C例例3.6 向字符变量赋整数向字符变量赋整数#include void main()char c1,c2;c1=97;c2=98;printf(%c%c n,c1,c2);printf(%d%d n,c1,c2);a b97 98运行结果:运行结果:a,b值的输出形式取决于值的输出形式取决于printf函数格函数格式串中的格式符式串中的格式符格式符为格式符为“%c”时输出的变量值为时输出的变量值为字字符符格式符为格式符为“%d时输出的
12、变量值为时输出的变量值为整整数数C语言程序设计 第二章数据类型C大小写字母转换?大小写字母转换?char word=a;v字符常量与字符串常量不同字符常量与字符串常量不同字符串常量字符串常量v定义:用双引号定义:用双引号()括起来的字符序列括起来的字符序列例:char ch;ch=“A”;例:char ch;ch=A;语言程序设计 第二章数据类型C不能把字符串赋给一个字符变量(不能把字符串赋给一个字符变量(P15P15)例1:int x=1,y=1;int x=y=1;()语言程序设计 第二章数据类型C2.5 变量赋初值两种方式:两种方式:1、先定义,然后赋值、先定义,然后赋值2、定义的同时赋
13、值。、定义的同时赋值。例2:int x,y;x=1;y=1;类型类型转换规则转换规则charint简明类型转换表简明类型转换表floatdouble低低高高语言程序设计 第二章数据类型Cdouble b=2.1;int a=3;v运算转换运算转换:不同类型数据运算时先不同类型数据运算时先自动自动转换成同一类型转换成同一类型要计算表达式要计算表达式“a/b”的值时,如何转换的值时,如何转换?先判断先判断 a 与与 b 类型是否相同类型是否相同按照转换表的规则,按照转换表的规则,int doubleint double,则则a a的值由的值由 3 3 扩充为扩充为 3.0000003.000000
14、进行运算,结果为进行运算,结果为1.4285714291.4285714292.6 运算符和表达式C运运算算符符算术运算符:(算术运算符:(+-+-*/%+-/%+-)关系运算符:(关系运算符:(=!=!=)逻辑运算符:(!逻辑运算符:(!&|&|)位运算符位运算符 :(:(|&|&)赋值运算符:(赋值运算符:(=及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(,)指针运算符:(指针运算符:(*&)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(.-.-)下标运算符:(下标运算符:
15、()其它其它 :(:(()-()-)语言程序设计 第二章数据类型C算术运算符和表达式算术运算符和表达式v基本算术运算符:基本算术运算符:+-*/%/%l结合方向:从左向右结合方向:从左向右l优先级优先级(P234 P234 附录附录B B)说明:说明:l两整数相除,结果为整数两整数相除,结果为整数l%要求两侧均为整型数据要求两侧均为整型数据例 5/2 =-5/2.0 =例 5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2.0=-2.5例 5%2 =1 1%10 =1 5%1 =0 5.5%2 ()语言程序设计 第二章数据类型C强制类型转换int a=3,b=5;float
16、c;c=a/b;格式:(类型名)(表达式)如:(float)ch;v自增、自减运算符自增、自减运算符 +-+-l作用:使变量值作用:使变量值加加1 1或或减减1 1l种类:种类:u前置前置 +i,-i (先执行先执行i+1或或i-1,再使用,再使用i值)值)u后置后置 i+,i-(先使用先使用i值值,再执行再执行i+1或或i-1)语言程序设计 第二章数据类型C k=+i;i=i+1;k=i;k=i+;k=i;i=i+1;例例 j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=
17、(a+)*b;/k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4语言程序设计 第二章数据类型C语言程序设计 第二章数据类型C2.7 赋值运算符和赋值表达式v 简单赋值运算符简单赋值运算符l符号:符号:=l格式:格式:变量变量 =(=(常量或变量常量或变量)表达式表达式l作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量v 复合赋值运算符复合赋值运算符l种类种类:+=-=+=-=*=/=%=/=%=&=|=&=|=l含义:含义:a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例如例如int a=3;double b
18、=a+3;v说明说明:l 左侧必须是变量,不能是其他左侧必须是变量,不能是其他例例 3=x-2*y;a+b=3;()语言程序设计 第二章数据类型C语言程序设计 第二章数据类型C以上两组表达式中以上两组表达式中a的值最终为多少?的值最终为多少?int a=12;a+=a-=a*a int a=2;a%=4-2;a+=a*=a-=a*=3;/a=-264 等价于a=a+(a-(a*a)/a=0 等价于a=a+(a*(a-(a*3)2.8 位运算符及其表达式(不讲)按位与(&)按位或(|)按位取反()按位异或()左移()左移变量或表达式移动的位数该二进制数按位左移,溢出的高位丢弃,低位补零。如:in
19、t a4,b;b=a移动的位数该二进制数按位右移,溢出的低位丢弃,高位用原来的符号位填补。如:int a4,b;b=a2;位运算应用举例(P23)v形式:形式:表达式表达式1 1,表达式表达式2 2,,表达式表达式n nv逗号表达式的值是逗号表达式的值是表达式表达式n n的值的值例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3)x=a=3,6*a/a=15,表达式值表达式值60/a=15,表达式值表达式值20/赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达式值表达式值18,x=3语言程序设计 第二章数据类型C2.9 逗号运算符和表达式sizeof 运算符sizeof (表达式 或类型名)结果为该表达式或类型占用的内存大小。如:sizeof(int)sizeof(4*a*c)语言程序设计 第二章数据类型C