《C数据类型与表达式实用.pptx》由会员分享,可在线阅读,更多相关《C数据类型与表达式实用.pptx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.1 C+的数据类型的数据类型数据类型总表数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作第1页/共37页基本数据类型说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:第2页/共37页说明:说明:(1)(1)整型数据分为长整型整型数据分为长整型(long int)(long int)、一般整、一般整型型(int)(int)和短整型和短整型(short int)(short int)。在。在intint前面加前面加longlong和和shortshort分别表示长整型和短整型。分别表示长整型和短整型。(2)(2)整型数据的存储方式为按二进制数形式存储
2、,整型数据的存储方式为按二进制数形式存储,例如十进制整数例如十进制整数8585的二进制形式为的二进制形式为10101011010101,则,则在内存中的存储形式如下图所示。在内存中的存储形式如下图所示。第3页/共37页(3)(3)在整型符号在整型符号intint和字符型符号和字符型符号charchar的前面的前面,可以加修饰符可以加修饰符signed(signed(表示表示“有符有符号号”)或或unsigned(unsigned(表示表示“无符号无符号”)。例如短整型数据占两个字节。例如短整型数据占两个字节 ,见下图。,见下图。第4页/共37页(4)(4)浮点型浮点型(又称实型又称实型)数据分
3、为单精度数据分为单精度 float:float:分配分配4 4个字节个字节,提供提供6 6位有效数字位有效数字 Double:Double:分配分配8 8个字节个字节,提供提供1515位有效数字位有效数字 long double:long double:同同doubledouble。(5)short(5)short和和short intshort int等效,等效,unsigned intunsigned int和和unsignedunsigned等效。等效。第5页/共37页2.2 常量v定义:程序运行时其值不能改变的量(即常数)v分类:整型常量整型常量实型常量实型常量字符常量字符常量字符串常
4、量字符串常量 常量第6页/共37页&整型常量(整常数)v三种形式:l十进制整数:由数字0 09 9和正负号表示.如 123,-456,0123,-456,0l八进制整数:由数字0 0开头,后跟数字0 07 7表示.如0123,0110123,011l十六进制整数:由0 x0 x开头,后跟0 09,a9,af,Af,AF F表示.如0 x123,0Xff0 x123,0Xffv整型常量的类型l根据其值所在范围确定其数据类型l在整常量后加字母l l或L L,认为它是long int 型常量例例 30000 为为short int型型 65536 为为 int 型型问题:0123 =()100 x1
5、23=()100Xff =()10问题:0123 =()100 x123=()100Xff =()1083291255#includeusing namespace std;int main()int a=0 xff;coutaendl;return 0;第7页/共37页&实型常量(实数或浮点数)表示形式:l十进制数形式:(必须有小数点)如0.123,.123,123.0,0.123,.123,123.0,0.0,123.0.0,123.l指数形式:(e e或E E之前必须有数字;指数必须为整数)如12.312.3e3 e3,123E2,1.23e4,123E2,1.23e4,e-5e-5 ,
6、1.2E-3.51.2E-3.5 实型常量的类型l默认doubledouble型l在实型常量后加字母f f或F F,认为它是float float 型第8页/共37页9&字符常量v定义:用单引号括起来的单个普通字符或转义字符.v字符常量的值:该字符的ASCIIASCII码值转义字符及其含义:转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符如如 101 -A 012 -n 376
7、-x61 -a 60 -0 483 -()例:A-101-x41-65如 A A6565,a a9797,0 048,48,nn1010如 a A?n 101v转义字符:反斜线后面跟一个字符或一个代码值表示例例 转义字符举例转义字符举例#includeusing namespace std;int main()cout 101 x42 Cn;cout I say:How are you?n;cout C Programn;cout Turbo Cendl;return 0;运行结果:运行结果:(屏幕显示屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例
8、例 void main()cout“Yb=n”endl;运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出:第9页/共37页l字符数据的使用方法字符数据和整型数据之间可以运算。字符数据与整型数据可以互相赋值。例例:举例举例#includeusing namespace std;int main()int num=10;char ch;ch=num+56;cout num chendl;return 0;结果:10B字符串常量:用双引号括起来的一串字符例:CHINA a a所以:char c;c=a;第10页/共37页如如#define PRICE 30例例:符号常量举例符号常量举
9、例#define PRICE 30int main()int num,total;num=10;total=num*PRICE;cout total=totalendl;return 0;运行结果:运行结果:total=300符号常量l符号常量:用标识符代表常量u定义格式:#define#define 符号常量 常量u一般用大写字母u是宏定义预处理命令,不是C语句第11页/共37页例2.2 小写字母转换为大写字母。#include using namespace std;int main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;coutc1 c2endl
10、;return 0;运行结果:运行结果:A B第12页/共37页例:例:coutabcnendl;输出:输出:abc例:例:cout I say Thank you!n ;输出:输出:I say Thank you!如果在一个字符串中最后一个字符为如果在一个字符串中最后一个字符为“”,则表示它是续行符。,则表示它是续行符。例:例:coutWe must study C +hard!;输出:输出:We must study C+hard!#include using namespace std;int main()coutaaaaaaa bbbbbbb _above$123M.D.John3da
11、ys#33char$123ab变量名规则定义:用来标识变量、常量、函数等的字符序列组成:l只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线l大小写敏感l不能使用关键字长度:无规定,有系统最长32个字符。命名原则:l见名知意l不宜混淆 如l与I,o与0第15页/共37页v变量必须变量必须“先定义,后使用先定义,后使用”v定义变量的一般形式:定义变量的一般形式:变量类型变量类型 变量名表列;变量名表列;例:float a,b,c,d,e;v定义变量时指定它的初值。定义变量时指定它的初值。例:float a=83.5,b,c=64.5,d=81.2,e;定义变量第16页/共37页v对多个
12、变量赋予同一对多个变量赋予同一初初值,必须分别指定,不能写成值,必须分别指定,不能写成float a=b=c=4.5;float a=b=c=4.5;而应写成而应写成 float a=4.5,b=4.5,c=4.5;float a=4.5,b=4.5,c=4.5;或或float a,b,c=4.5;float a,b,c=4.5;a=b=c;a=b=c;第17页/共37页v在定义变量时,如果加上关键字在定义变量时,如果加上关键字constconst,则变量的值,则变量的值在程序运行期间不能改变,这种变量称为常变量在程序运行期间不能改变,这种变量称为常变量(constant variable)(
13、constant variable)。例:const int a=3;v在定义常变量时必须同时对它初始化在定义常变量时必须同时对它初始化(即指定其值即指定其值)v常变量不能出现在赋值号的左边。常变量不能出现在赋值号的左边。例:const int a=5;a=3;/常变量不能被赋值 常变量常变量第18页/共37页v可以用表达式对常变量初始化可以用表达式对常变量初始化例:const int b=3+6,c=3*cos(1.5);注意:使用了系统函数cos,必须包含头文件#include 或#include 第19页/共37页 算术运算符算术运算符 +、-、*、/、%、+、-关系运算符关系运算符 、
14、!逻辑运算符逻辑运算符 、|、!位运算符位运算符 、|、2.4 C+的运算符第20页/共37页赋值运算符赋值运算符 (及其扩展赋值运算符及其扩展赋值运算符)条件运算符条件运算符 (?:)(?:)逗号运算符逗号运算符 (,)指针运算符指针运算符 (*)(*)引用运算符和地址运算符引用运算符和地址运算符 ()求字节数运算符()求字节数运算符()强制类型转换运算符(强制类型转换运算符((类型类型)或类型或类型()())成员运算符成员运算符 (.)指向成员的运算符指向成员的运算符 (-)下标运算符下标运算符 ()其他其他 (如函数调用运算符()(如函数调用运算符()第21页/共37页u学习运算符应注意
15、:学习运算符应注意:运算符功能运算符功能与运算量关系与运算量关系要求运算量个数要求运算量个数要求运算量类型要求运算量类型运算符优先级别运算符优先级别结合方向结合方向结果的类型结果的类型第22页/共37页u算术运算符和表达式算术运算符和表达式基本算术运算符:+-*/%*/%结合方向:从左向右优先级:-*/%*/%-+-+-(3)(4)(5)(3)(4)(5)说明:“-”为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例 5/2 =-5/2.0 =例 5%2 =-5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2.0=-2.5例 5%2 =1 -5%2 =-1
16、 1%10 =1 5%1 =0 5.5%2 ()#include using namespace std;int main()cout-5%2endl;cout5%-2endl;return 0;运行结果:11第23页/共37页例例:#include#define PRICE 12.5using namespace std;void main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;cout“total=“total“,ch1=“ch1endl;宏定义变量定义输出结果运行结果:total=37.5,ch
17、1=d第24页/共37页2.5.3表达式中各类数值型数据间的混合运算u隐式转换隐式转换什么情况下发生什么情况下发生运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换运算转换规则运算转换规则:不同类型数据运算时先自动转换成同一类型不同类型数据运算时先自动转换成同一类型第25页/共37页doublefloatlongunsignedintchar,short低低高高说明说明:必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换例例 char ch;int i;float f;double
18、 d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f -d/l例例 int i;float f;double d;long l;第26页/共37页l自增、自减运算符+-+-作用:使变量值加1 1或减1 1种类:前置 +i,-i (+i,-i (先执行i i+1+1或i-1i-1,再使用i i值)后置 i+,i-(i+,i-(先使用i i值,再执行i i+1+1或i-1i-1)例 j=3;k=+j;j=3;k=+j;j=3;k
19、=j+;j=3;k=j+;j=3;cout+jendl;j=3;cout+jendl;j=3;coutj+endl;j=3;coutj+*/%-+-+-*/%-+-(3 3)()(4 4)()(5 5)例-i+i+-(i+)-(i+)i=3;couti+endl;i=3;couti+endl;/-3/-3 例 j+k;(j+)+k;j+k;(j+)+k;例-i+i+i=3;cout-i+endl;i=3;cout-i+endl;第28页/共37页l显式转换(强制转换)显式转换(强制转换)一般形式:一般形式:(类型名)(表达式)例 (int)(x+y)(int)(x+y)(int)x+y (in
20、t)x+y (double)(3/2)(double)(3/2)(int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变说明:强制转换得到所需类型的中间变量,原变量类型不变 例例#include using namespace std;void main()float x;int i;x=3.6;i=(int)x;cout x=xi=iendl;结果:结果:x=3.6,i=3精度损失问题较高类型向较低类型转换时可能发生第29页/共37页2.62.6赋值运算符与赋值表达式u简单赋值运算符简单赋值运算符符号:=格式:变量标识符=表达式作用:将一个数据(常量或表达式)
21、赋给一个变量u复合赋值运算符种类种类:+=-=*=/=%=+=-=*=/=%=&=|=&=|=含义:含义:exp1 op=exp2 exp1 op=exp2 exp1=exp1 op exp2exp1=exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3;a=3;d=func();d=func();c=d+2;c=d+2;第30页/共37页u说明:结合方向:自右向左优先级:15左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自
22、动自动转换成其左边转换成其左边变量的类型变量的类型例 3=x-2*y;3=x-2*y;a+b=3;a+b=3;例例 float f;int i;i=10;f=i;则则 f=10.0例例 int i;i=2.56;/结果结果i=2;例:a=b=c=5:a=b=c=5 a=(b=5)a=(b=5)a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)/表达式值为5 5,a,b,ca,b,c值为5 5/b=5;a=5/b=5;a=5/表达式值1111,c=6,a=11c=6,a=11/表达式值1010,a=10
23、,b=4,c=6a=10,b=4,c=6/表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2第31页/共37页u说明说明:结合方向:结合方向:自右向左自右向左优先级优先级:15左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套赋值转换赋值转换规则规则:使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左边变量转换成其左边变量的类型的类型例:a=12;a=12;a+=a-=a*a a+=a-=a*a例:int a=2;:int a=2;a%=4-1;a%=4-1;a+=a*=a-=a*=3
24、;a+=a*=a-=a*=3;/a=-264/a=-264 等价于a=a+(a=a-(a*a)a=a+(a=a-(a*a)/a=0/a=0 等价于a=a+(a=a*(a=a-(a=a*3)a=a+(a=a*(a=a-(a=a*3)第32页/共37页例例2.5 将有符号数据传送给无符号变量。将有符号数据传送给无符号变量。#include using namespace std;int main()unsigned short a;short int b=-1;a=b;couta=aendl;return 0;运行结果为运行结果为:65535第33页/共37页u逗号运算符和表达式逗号运算符和表达式
25、形式:形式:表达式表达式1 1,表达式表达式2 2,表达式表达式n n结合性结合性:从左向右从左向右优先级优先级:17:17逗号表达式逗号表达式的值:等于表达式的值:等于表达式n n的值的值用途:用途:常用于循环常用于循环forfor语句中语句中例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3)x=a=3,6*a例例 a=1;b=2;c=3;coutabcendl;cout(a,b,c)bcendl;/a=15,表达式值表达式值60/a=15,表达式值表达式值20/赋值表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达式值表达式值18,x=3/123/323第34页/共37页u逗号运算符和表达式形式:形式:表达式表达式1,表达式表达式2,表达式表达式n结合性结合性:从左向右从左向右优先级优先级:17逗号表达式逗号表达式的值:等于表达式的值:等于表达式n的值的值用途:用途:常用于循环常用于循环for语句中语句中例例:#include void main()int x,y=7;float z=4;x=(y=y+6,y/z);coutx=“xendl;运行结果:运行结果:x=3第35页/共37页作业:P4142,38第36页/共37页感谢您的欣赏!第37页/共37页