《c数据类型及表达式实用.pptx》由会员分享,可在线阅读,更多相关《c数据类型及表达式实用.pptx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 数据结构数据类型基本类型构造类型指针类型整型浮点型字符型无值型基本型int,2Byte长整型long,4Byte短整型short,2Byte无符号整型 unsigned,2Byte单精度浮点型float,4Byte双精度浮点型double,8Bytechar,1Bytevoid数组类型结构体类型联合体枚举类型第1页/共41页2 C程中数据的表示方法八进制整型常量十六进制整型常量十进制整型常量小数形式指数形式直接形式八进制形式十六进制形式转义字符整型常量浮点常量字符常量符号常量基本知识定义格式初始化命名存储赋值常量变量C程中数据的表示形式第2页/共41页一、常量(程序运行过程中)其值不发生改
2、变的量1、整型常量(即整型常数,有三种表示法)(1)整型常量的表示法八进制整型常量十六进制整型常量十进制整型常量前缀为0,数码07前缀为0 x或0X,数码09,af或AF数码中出现字母时字母的大小写应与前缀一致无前缀,数码09第3页/共41页一、常量(程序运行过程中)其值不发生改变的量1、整型常量(即整型常数,有三种表示法)(2)对整型常量的说明整型常量的类型整型常量的后缀八、十六进制表示的整型常量的真值值为3276832767 基本整型 065535 无符号整型 32767或32768 长整型L或l 长整型U或u 无符号数第4页/共41页一、常量(程序运行过程中)其值不发生改变的量2、浮点常
3、量也称实型常量,C语言中实数用十进制表示,有两种形式(1)小数形式(2)指数形式由小数点和09组成,当整数或小数部分为0时,0可以省略由尾数、阶码标志e或E及阶码组成一般形式:aEn(a为尾数,n为阶码),表示a10n第5页/共41页一、常量(程序运行过程中)其值不发生改变的量3、单字符常量(1)直接形式(2)八进制形式格式为:ddd,“ddd”表示13位八进制数,其值为某字符对应的ASCII值用单引号括起来的一个字符(3)十六进制形式格式为:xhh,“hh”表示12位十六进制数,其值为某字符对应的ASCII值(4)转义字符是一种特殊的字符常量,以“”开头,后跟一个或几个字符,它具有特定的含义
4、,不同于字符原有意义第6页/共41页一、常量(程序运行过程中)其值不发生改变的量4、字符串常量由一对双引号括起来的字符序列,可以无字符,也可只有一个字符字符串常量与单字符常量的区别:引号引号字符个数字符个数存储存储单字符单字符 只能为单个字符只能为单个字符字符串字符串 可为可为0、1或多个字符或多个字符系统自动加一个字系统自动加一个字符串结束标志符串结束标志“0”第7页/共41页一、常量(程序运行过程中)其值不发生改变的量5、符号常量用一种标识符代表一个常量符号常量在其作用域内不能改变,也不能再被赋值符号常量用大写一般形式:define 标识符 常量 define PI 3.1415926P3
5、9 例4.2第8页/共41页二、变量(程序运行过程中)其值可以发生改变的量1、变量的基本知识(1)变量的命名(2)变量的存储一个变量占据一定的存储空间;在确定了变量类型后,就确定了其在内存中所占的字节数每一个变量有且只有一种类型(3)使用变量前应先给出确定值要符合标识符的规定,C语言中用小写字母表示第9页/共41页二、变量(程序运行过程中)其值可以发生改变的量2、变量定义的格式一般形式:修饰符 类型说明符 变量表列;例3、变量的初始化对变量要“先定义,后使用”,在使用之前应有确定的值,也就是要给变量赋值,赋值有两种方法 (1)定义时直接赋值,称为初始化;(声明部分)修饰符 类型说明符 变量1=
6、值1,变量2=值2,;例 (2)程序执行过程中对变量赋值。(执行部分)例第10页/共41页二、变量(程序运行过程中)其值可以发生改变的量4、不同类型变量的说明(1)整型变量基本型短整型无符号型(2)浮点型变量(3)字符型变量单精度浮点型双精度浮点型第11页/共41页3 运算符及表达式一、C语言运算符概述1、概念描述各种不同运算的符号称为运算符,参加运算的数据称为运算对象或操作数用运算符和括号将运算对象连接起来的符合C语言语法规则的式子称为C语言表达式C语言运算符不仅具有优先级,而且还有结合性的特性第12页/共41页2、分类(1)按运算时操作数的个数(2)按运算符在运算时的作用单目运算符 、双目
7、运算符 、*、/三目运算符?:算术运算符、关系、逻辑、位操作、赋值、条件、逗号、指针、求字节数、强制类型转换、成员及括号运算符一、C语言运算符概述第13页/共41页二、算术运算符及其表达式1、算术运算符、*、/、%/:两整数相除结果为整数,“向零取整”%:两个运算量必须是整型量2、算术表达式用算术运算符和括号运算符将运算对象连接起来的符合C语言规则的式子,称为算术表达式第14页/共41页三、自增自减运算符及含自增自减表达式 自增运算符 i+、+i 自减运算符 i-、-i注意:1、自增(减)运算符只能用于变量,而不能用于常量或表达式2、自增(减)运算符均为右结合3、当自增(减)运算符是后缀运算符
8、时,应先使用自增(减)运算符的运算对象计算整个表达式的值,在计算自增(减)例4.44、当自增(减)运算符是前缀运算符时,应先完成自增自减,然后使用运算后的结果计算整个表达式的值 例4.55、当表达式中既有前缀又有后缀自增(减)运算符时,应先计算所有的前缀自增自减运算,再计算整个表达式的值,最后计算所有的后缀自增自减运算 例4.6第15页/共41页四、赋值运算符和赋值表达式1、简单的赋值运算符2、复合的赋值运算符3、赋值表达式=双目;仅高于逗号运算符;右结合性 将一个数据赋给一个变量,也可将一个表达式的值赋给一个变量+=、=、*=、/=、&=、=、|=定义:由赋值运算符将一个变量和一个表达式连接
9、起来的式子,称为赋值表达式形式:第16页/共41页五、逗号运算符和逗号表达式运算符:“,”表达式:用逗号运算符将两个表达式连接起来的式子,称为逗号表达式形式:表达式1,表达式2扩展形式:表达式1,表达式2,表达式n第17页/共41页六、位运算运算符 含义 运算符 含义 按位与 取反|按位或 右移(1)(1)位运算符中除以外,均为双目运算符,即要求两侧各有一个运算量。(2)(2)运算量只能是整型或字符型的数据,不能为实型数据。第18页/共41页1、按位与运算&运算的含义是对参与按位与运算的两个运算对象按二进制方式对对应位进行与运算,当与运算的两个对应位都为1时,运算结果的对应位也为1;否则为0例
10、:-3&5 1111 1111 1111 1101 (-3)&0000 0000 0000 0101 (5)0000 0000 0000 0101 (结果为5)第19页/共41页2、按位或运算|运算的含义是对参与按位或运算的两个运算对象按二进制方式对对应位进行或运算,当或运算的两个对应位都为0时,运算结果的对应位也为0;否则为1例:-3|5 1111 1111 1111 1101 (-3)|0000 0000 0000 0101 (5)1111 1111 1111 1101 (结果为-3)第20页/共41页3、按位异或运算运算的含义是对参与按位异或运算的两个运算对象按二进制方式对对应位进行异或
11、运算,当异或运算的两个对应位不相同时,运算结果的对应位为1时;否则为0例:-35 1111 1111 1111 1101 (-3)0000 0000 0000 0101 (5)1111 1111 1111 1000 (结果为-8)第21页/共41页4、按位取反运算运算的含义是对参与取反运算的运算对象按二进制方式对每一个位求反,如果某位为1,则运算结果的对应位为0时;否则为1。取反为单目运算符例:5 0000 0000 0000 0101 (5)1111 1111 1111 1010 (结果为-6)第22页/共41页5、按位左移运算运算的作用是对参与运算的运算对象按规定的位移数进行左移,运算符的
12、左操作数是需要移位的数据,右操作数是移位的位数,在移位过程中高位移出的位舍弃,低位左移后补0例:53 运算的作用是对参与运算的运算对象按规定的位移数进行右移,运算符的左操作数是需要移位的数据,右操作数是移位的位数,在移位过程中低位移出的位舍弃,高位右移后补0或1;如要移位的数据是无符号数则补0,有符号数补符号位的值例:122 0000 0000 0000 1100 (12)0000 0000 0000 0011 (结果为3)第24页/共41页4 C语言中的类型转换C语言规定:不同的数据类型不能直接进行运算,只有相同类型的数据可以。但在描述表达式时,参与运算的对象却可以是不同类型的数据,这样在表
13、达式进行运算是就存在类型转换的问题。类型转换形式类型的自动转换强制的类型转换赋值表达式中的类型转换不同类型数据的混合运算第25页/共41页一、类型的自动转换1、赋值表达式中的类型转换如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。(1)实型数据赋给整型变量舍弃小数部分(2)整型数据赋给单、双精度变量数值不变,但以浮点数形式存储到变量中第26页/共41页(3)字符型数据赋给整型变量(字符型数据只占1个字节,而整型数据占两个)将字符型数据(8位)存放到整型变量低8位中,整型变量的高字节的所有位存储的是低字节的“高位扩展”。若字符最高位为1,则高8位全补1;若字符最高
14、位为0,则高8位全补0;称为“符号扩展”一、类型的自动转换1、赋值表达式中的类型转换第27页/共41页(3)字符型数据赋给整型变量一、类型的自动转换1、赋值表达式中的类型转换例1 int a;char c1;c1A;ac1;c1a0 1 0 0 00 100 1 0 0 00 1000 0 000 0 0第28页/共41页(3)字符型数据赋给整型变量一、类型的自动转换1、赋值表达式中的类型转换例2 int a;a374;374a1 1 1 1 10 011 1 1 1 10 011 1 1 1 11 11第29页/共41页(3)字符型数据赋给整型变量一、类型的自动转换1、赋值表达式中的类型转换
15、从例1、2可知:将ASCII码值为0127的字符型数据赋给整型变量时,整型变量得到的值恰好是该字符型数据的ASCII码值;将ASCII码值为128255的字符型数据赋给整型变量时,整型变量得到的值不是该字符型数据的ASCII码值,而为1281。第30页/共41页(4)整型数据赋给字符型变量一、类型的自动转换1、赋值表达式中的类型转换只将其低8位原封不动地送到char型变量,即“高位截断”例1 char c1254;1 1 1 1 11 010 0 0 0 00 001 1 1 1 11 01254c1第31页/共41页(4)整型数据赋给字符型变量一、类型的自动转换1、赋值表达式中的类型转换只将
16、其低8位原封不动地送到char型变量,即“高位截断”例2 char c1256;0 0 0 0 00 000 0 0 0 00 100 0 0 0 00 00256c1第32页/共41页(4)整型数据赋给字符型变量一、类型的自动转换1、赋值表达式中的类型转换从例1、2可知:当整型数据的值为0255时,将其赋给字符变量,字符型变量的ASCII码值恰好是该整型数据的值;当整型数据的值为25632767时,将其赋给字符变量,字符型变量的ASCII码值恰好是该整型数据的值与256相除后的余数。第33页/共41页(5)int 型数据赋给long int 型变量一、类型的自动转换1、赋值表达式中的类型转换
17、将整型数据的16位存储到长整型变量的低16位中 如int数据为正,则long int变量高16为补0;如int数据为负,则long int变量高16为补1。例 P53第34页/共41页(6)long int型数据赋给int或unsigned int型变量一、类型的自动转换1、赋值表达式中的类型转换高位截断 例 P53将unsigned int型数据存放在long int型变量低16位,高位补0(7)unsigned int型数据long int型变量赋给(8)相同长度的整型数据赋给相同长度的整型变量原样照赋,但表示的真值可能不同 例 P54 例4.8第35页/共41页一、类型的自动转换1、赋值
18、表达式中的类型转换总结:不同类型的整型数据间的赋值归根到底就是按照存储单元中的存储形式直接传送第36页/共41页一、类型的自动转换2、不同类型数据的混合运算当某一运算符两侧运算对象类型不同时,应进行类型转换,转换依据为:低类型转为高类型类型的高低取决于该类型数据在内存中占字节数,占字节数少的类型低,反之高第37页/共41页一、类型的自动转换2、不同类型数据的混合运算例 int a=3;long int b=10;float x=4.2;求表达式a+a*b-373*x的值第38页/共41页二、强制的类型转换当自动的类型转换不能达到目的式,可使用强制的类型转换它是通过类型转换运算来实现的类型转换运算符:(类型符)类型转换表达式的一般形式:(类型符)(表达式)注:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生改变第39页/共41页本章结束作业:P56 4.1 4.3 4.4 4.5 4.6 4.8第40页/共41页感谢您的欣赏!第41页/共41页