c语言程序设计第三章 数据类型、运算符与表达式_第1页
c语言程序设计第三章 数据类型、运算符与表达式_第2页
c语言程序设计第三章 数据类型、运算符与表达式_第3页
c语言程序设计第三章 数据类型、运算符与表达式_第4页
c语言程序设计第三章 数据类型、运算符与表达式_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 1 1、C C程序中是否一定包含注释,程序中是否一定包含注释, 注释的作用是什么?注释的作用是什么? 答案:不一定,是方便阅读程序的。答案:不一定,是方便阅读程序的。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 2 2、每个程序至少包含一个什么函数?、每个程序至少包含一个

2、什么函数? 答案:主函数答案:主函数main C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3 3、程序中程序中mainmain函数可以含两个以上吗?函数可以含两个以上吗? 答案:不能,有且只能有一个。答案:不能,有且只能有一个。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 4 4、一个函数的组成是什么样?、一个函数的组成是什么样? 答案:由两部分组成即:答案:由两部分组成即: 函数的首部函数的首部 函数体函数体 例如:例如: int a

3、dd(int x,int y) int z; z=x+y; return(z); 函数首部函数首部 函数体函数体 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 5 5、函数体包含哪几部分?、函数体包含哪几部分? 答案:包括:声明部分答案:包括:声明部分 执行部分执行部分 例如:例如:int add(int x,int y) int z; z=x+y; return(z); 声明部分声明部分 执行部分执行部分 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表

4、 达达 式式 7 7、语句的标记是什么?语句的标记是什么? 答案:是结尾用分号即:答案:是结尾用分号即: “;” C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 6 6、程序的执行次序是怎样的?、程序的执行次序是怎样的? 答案:从主函数答案:从主函数main开始执行,在主函开始执行,在主函 数结尾结束。中间可以调用其他函数。数结尾结束。中间可以调用其他函数。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 8 8、程序在机器上的执行过程?、程序

5、在机器上的执行过程? 答案:编辑、编译、连接、执行答案:编辑、编译、连接、执行 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 9 9、什么叫算法?算法有什么特性?、什么叫算法?算法有什么特性? 答案:算法就是解决问题的步骤答案:算法就是解决问题的步骤; 有穷性、确定性、可以有输入、至少一个有穷性、确定性、可以有输入、至少一个 输出、有效性。输出、有效性。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 1010、表示算法的基本结构是哪三种?、

6、表示算法的基本结构是哪三种? 答案:顺序结构、选择结构、循环结构答案:顺序结构、选择结构、循环结构 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 1111、设计程序分哪几个步骤?、设计程序分哪几个步骤? 答案:答案: 分析问题、设计算法、画流程图(分析问题、设计算法、画流程图(N-S图图 )、编制程序)、编制程序 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 第三章 数据类型、运算符 与表达式 预备知识 数据类型 常量与变量 变量赋初值 不

7、同类型数据间的转换 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 预备知识预备知识 字节和位字节和位 v内存以字节为单元组成内存以字节为单元组成 v每个字节有一个地址每个字节有一个地址 v一个字节一般由一个字节一般由8个二进制位组成个二进制位组成 v每个二进位的值是每个二进位的值是0或或1 01234567 200 208 202 206 204 . C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 数值的表示方法数值的表示方法原码、反码和补码

8、原码、反码和补码 v原码:最高位为符号位,其余各位为数值本身原码:最高位为符号位,其余各位为数值本身 的绝对值的绝对值 v反码:反码: l正数:反码与原码相同正数:反码与原码相同 l负数:符号位为负数:符号位为1,其余位对原码取反,其余位对原码取反 v补码:补码: l正数:原码、反码、补码相同正数:原码、反码、补码相同 l负数:最高位为负数:最高位为1,其余位为原码取反,再,其余位为原码取反,再 对整个数加对整个数加1 例如:例如: X X= +91 = +91 = = + +1011011, X1011011, X原 原= =0 01011011 1011011 X X= -91 = -91

9、 = = - -1011011, X1011011, X原 原= =1 11011011 1011011 X= X= +91 +91 = = + +1011011, X1011011, X反 反= =0 01011011 1011011 X X= -91 = -91 = = - -1011011, X1011011, X反 反= =1 10100100 0100100 X= X= +91 +91 = = + +1011011, X1011011, X补 补= =0 01011011 1011011 X X= -91 = -91 = = - -1011011, X1011011, X补 补= =

10、1 10100101 0100101 求数求数 -88( (10)=-1011000(2)的原码、反码和补码 的原码、反码和补码 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 原码原码反码反码补码补码 +7000001110000011100000111 -7100001111111100011111001 +0000000000000000000000000 -0100000001111111100000000 数的范围数的范围 01111111 11111111 (-127+127) 01111111 10000

11、000 (-127+127) 01111111 10000000 (-128+127) (用一字节表示数)(用一字节表示数) 负数补码转换成十进制数:最高位不动,其余位取反加负数补码转换成十进制数:最高位不动,其余位取反加1 例例 补码:补码:11111001 取反:取反:10000110 加加1: 10000111=-7 例如:求补码为例如:求补码为 11111011 的十进制数的十进制数 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3.1 数据类型数据类型 数据类型总表数据类型总表 C C 数数 据据 类类 型

12、型 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型void 定义类型定义类型typedef 字符类型字符类型char 枚举类型枚举类型enum 整整 型型 实型实型 单精度型单精度型float 双精度型双精度型double 数组数组 结构体结构体struct 共用体共用体union 短整型短整型short 长整型长整型long 整型整型int 数据类型决定:数据类型决定: 1、数据的表示形式、数据的表示形式 2、数据占内存字节数、数据占内存字节数 3、数据取值范围、数据取值范围 4、其上可进行的操作、其上可进行的操作 C 语语 言言 程程 序序 设设 计计 第第 三三 章章

13、 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 基本数据类型基本数据类型 类类 型型 符符 号号 关键关键 字字 数的表示范围数的表示范围所占位数所占位数 整型整型字符型字符型实型实型 有有 无无 signedint16 -3276832767 signedshort16 -3276832767 signedlong 32 -21474836482147483647 16unsigned int 065535 32 04294967295 unsigned long unsigned short16 065535 有有float32 -3.4e-383.4e38 有有dou

14、ble64 -1.7e-3081.7e308 有有char8-128127 无无 unsigned char80255 说明说明:数据类型所占字节数随机器硬件不同而不同数据类型所占字节数随机器硬件不同而不同, 上表以上表以IBM PC机为例机为例: C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3.2 常量与变量常量与变量 标识符标识符 v定义:用来标识变量、符号常量、函数、数组、类型定义:用来标识变量、符号常量、函数、数组、类型 等的有效字符序列;等的有效字符序列; v组成:组成: l只能由字母、数字、下划线组成,

15、且第一个字母必只能由字母、数字、下划线组成,且第一个字母必 须是字母或下划线须是字母或下划线 l大小写敏感大小写敏感 l不能使用关键字不能使用关键字 v长度:最长长度:最长32个字符,最好不要超过个字符,最好不要超过8个字符。个字符。 v建议:建议: l见名知意见名知意 l不宜混淆不宜混淆 如如l与与I, o与与0 例例: :判断下列标识符号合法性判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 int ab _above $123 M.D.John 3days #33 int$123ab C 语语

16、 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 u一般用大写字母一般用大写字母 u是宏定义预处理命令,不是是宏定义预处理命令,不是C语句语句 l直接常量直接常量: : u整型常量整型常量 u实型常量实型常量 u字符常量字符常量 u字符串常量字符串常量 如如 #define PRICE 30 常量常量 v定义:程序运行时其值不能改变的量(即常数)定义:程序运行时其值不能改变的量(即常数) v分类分类: : l符号常量符号常量: :用标识符代表常量用标识符代表常量 u定义格式:定义格式: #define#define 符号常量符号

17、常量 常量常量 例例 符号常量举例符号常量举例(ch3_1.c) #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); 运行结果:运行结果:total=300 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 printf(I say:How are you?n); printf(C Programn); printf(Turbo C); 运行结果:运行结果:(屏幕显示屏幕显示) A B C Isay

18、:”How are you?” C Program Turbo C C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 注意事项:注意事项: v单撇号中的字符不能是单撇号中的字符不能是或者或者 v一个字符占一个字节,存其对应的一个字符占一个字节,存其对应的ASCII码码 v思考:思考:9和和9的区别的区别 v字符型数据可像整数一样在程序中参与相关的字符型数据可像整数一样在程序中参与相关的 运算运算 a 32 结果为结果为65。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符

19、符 与与 表表 达达 式式 v字符常量与字符串常量不同字符常量与字符串常量不同 ch=“A”; 例例: char ch; ch=A; C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 编译程序根据变量定义为其 分配指定字节的内存单元 . 地址 int a=1, b=-3,c; a b c 2字节 2字节 2字节字节 地址 地址 . 内存 1 -3 随机数随机数 变量变量 v概念:其值可以改变的量概念:其值可以改变的量 v变量名变量名与与变量值变量值 v变量定义的一般格式:变量定义的一般格式: 数据类型数据类型 变量变量1

20、,变量,变量2,变量,变量n; v变量初始化变量初始化:定义时赋初值定义时赋初值 例例: int a,b,c; float data; 决定分配字节数 和数的表示范围 合法标识符例例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1; v变量的使用:变量的使用:先定义,后使用先定义,后使用 例例1 int student; statent=19; /Undefined symbol statent in function main 例例2 float a,b,c; c=a%b; /Illegal u

21、se of floating point in function main v变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头 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)*1.2; printf(“data=%fn”,data); C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 a=327

22、67; b=a+1; printf(“%d,%d”,a,b); 01111111111111111 10000000000000000 运行结果:运行结果: 32767,-32768 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 v整型变量的定义整型变量的定义 整型变量定义举例整型变量定义举例: int a,b; unsigned short c,d; long e, f; 例例: main() int a,b,c,d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; pri

23、ntf(“a+u = %d, b+u = %dn”,c, d); 运行结果:a+u = 22, b+u = -14 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/ v实型数据在内存中按照指数形式存储实型数据在内存中按照指数形式存储 + .31459 1 数符数符小数部分小数部分指数指数 v实型数据的舍入误差实型数据的舍入误差 例:例:/example3.4 main() flo

24、at a,b; a=123456.789e5; b=a+20; printf(“%f,%f”,a,b); 运行结果:运行结果: 12345678848.000000,12345678848.000000 a的值是的值是 12345678900 b的理论值应是的理论值应是 12345678920 实型变量只能保证实型变量只能保证7位有效位有效 数字,后面的数字是无意数字,后面的数字是无意 义的,并不准确地表示该义的,并不准确地表示该 数。数。 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 char a; int x,s

25、; int x,s; a=D; a=D; x=A+5; / x=A+5; /* * x=65+5; x=65+5; * */ / s=!+G / s=!+G /* * s=33+71; s=33+71; * */ / printf(“%c,%c,%d”,a,x,s); printf(“%c,%c,%d”,a,x,s); 没有没有字符串变量字符串变量,用字符数组存放。,用字符数组存放。 运行结果:运行结果: D D,F F,104104 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 例例 /*example3.5*/

26、#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=d C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3.6 变量赋初值变量赋初值 C语言允许在定义变量的同进使变量初始化。语言允许在定义变量的

27、同进使变量初始化。 例:例: int a=3; float f=3.56; char c=a; int a,b,c=5; int a; a=3; float f; f=3.56; Char c; c=a; Char c; c=a; C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3.7不同类型数据间的转换不同类型数据间的转换 隐式转换隐式转换 v什么情况下发生什么情况下发生 l运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时 l赋值转换赋值转换-把一个值赋给与其类型不同的把一个值赋给与其类型不同的 变量时

28、变量时 l输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式 l函数调用转换函数调用转换-实参与形参类型不一致时实参与形参类型不一致时 转换转换 v运算转换规则运算转换规则: :不同类型数据运算时先不同类型数据运算时先自动自动 转换成同一类型转换成同一类型 a 32 int age; age = 11.1 char name=a; printf(“%dn”,name); C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 doublefloat long unsigned intchar,short 低

29、低 高高 说明说明: 必定的转换必定的转换 运算对象类型不同时转换运算对象类型不同时转换 例例 char ch; int i; float f; double d; ch/i + f*d - (f+i) int int double double double double double double int int double double double double double double 10+a +i*f - d/l 例例2 int i; float f; double d; long l; C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运

30、算算 符符 与与 表表 达达 式式 显式转换(强制类型转换)显式转换(强制类型转换) v一般形式:一般形式:(类型名类型名)(表达式)表达式) 例例 ( (int)(x+y)int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 v说明:强制转换得到所需类型的中间变量,说明:强制转换得到所需类型的中间变量, 原变量类型不变原变量类型不变 例例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:结果:x=3.600000

31、,i=3 精度损失问题精度损失问题 较高类型向较低类型转换时可能发生较高类型向较低类型转换时可能发生 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 C C语言运算符语言运算符 P55 P55 算术运算符:(算术运算符:(+ - + - * * / % + - / % + -) 关系运算符:(关系运算符:( = != = !=) 逻辑运算符:(!逻辑运算符:(! k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,+

32、j); j=3; printf(“%d”,j+); j=3; printf(“%d”,j+); a=3;b=5;c=(+a) a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+) a=3;b=5;c=(a+)* *b;b; /k=4,j=4/k=4,j=4 /k=3,j=4/k=3,j=4 /4/4 /3/3 /c=20,a=4/c=20,a=4 /c=15,a=4/c=15,a=4 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 v自增、自减运算符自增、自减运算符+ -+ - l作用:使变量值加

33、作用:使变量值加1 1或减或减1 1 l种类:种类: u前置前置 +i,-i ( +i,-i (先执行先执行i i+1+1或或i-1i-1,再使用,再使用i i值)值) u后置后置 i+,i- ( i+,i- (先使用先使用i i值值, ,再执行再执行i i+1+1或或i-1i-1) l说明:说明: u+ - + - 不能用于常量和表达式不能用于常量和表达式, ,如如5+5+,(a+b)+(a+b)+ u+ -+ -结合方向:结合方向: 自右向左自右向左 u优先级:优先级:- + - - + - -* * / % -+ - / % -+ - (2) (3) (4)(2) (3) (4) 例例

34、-i+ -i+ -(i+) -(i+) i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); /-3/-3 例例 j+k; (j+)+k; j+k; (j+)+k; 例例 -i+ -i+ i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); 尽可能多地尽可能多地( (从左至右从左至右) )将若干字符组成一个运算符将若干字符组成一个运算符 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 3.9 3.9 赋值运算符和表达式赋值运算符和表达式 v简单

35、赋值运算符简单赋值运算符 l符号:符号: = = l格式:格式: 变量标识符变量标识符= =表达式表达式 l作用:将一个数据(常量或表达式)赋给一作用:将一个数据(常量或表达式)赋给一 个变量个变量 v复合赋值运算符复合赋值运算符 l种类种类:+= -= += -= * *= /= %= /= %= = = = a=3; d=func(); d=func(); c=d+2; c=d+2; C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 v说明说明: : l结合方向:结合方向:自右向左自右向左 l优先级优先级: 14 l

36、左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式 l赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套 l赋值转换赋值转换规则规则: :使赋值号右边表达式值使赋值号右边表达式值自动自动转换转换 成其左边变量的类型成其左边变量的类型 例例 3=x-23=x-2* *y;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

37、=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,b=4,c=6a=10,b=4,c=6 /表达式值表达式值5 5,a=5,b=10,c=2a=5,b=10,c=2 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 v说明说明: : l结合方向:结合方向:自右向左

38、自右向左 l优先级优先级: 14 l左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式 l赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套 l赋值转换赋值转换规则规则: :使赋值号右边表达式值使赋值号右边表达式值自动自动 转换成其左边变量的类型转换成其左边变量的类型 例例: a=12; : a=12; a+=a-=a a+=a-=a* *a a 例例: int a=2; : int a=2; a+=a a+=a* *=a-=a=a-=a* *=3;=3; /a=-264 /a=-264 等价于等价于a=a+(a=a-(aa=a+(a=a-(a* *a)a

39、) /a=0 /a=0 等价于等价于a=a+(a=aa=a+(a=a* *(a=a-(a=a(a=a-(a=a* *3)3) C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 int = float,double规则:舍弃小数部分,内存中规则:舍弃小数部分,内存中 以整数存储。以整数存储。 例:int i; i=3.56; /结果:i=3 float ,double= int 规则:先将整型数据转换成浮点规则:先将整型数据转换成浮点 型数据或双精度数据,然后以型数据或双精度数据,然后以float,double形式存储到变

40、形式存储到变 量中。量中。 例:例: float i;double h; int a=23; i=a; h=a; /结果:结果:i=23.00000h=2.300000e+01 float=double规则:截取其前面规则:截取其前面7位有效数字,存位有效数字,存 放到放到float变量的存储单元中。注意数值范围不能溢出。变量的存储单元中。注意数值范围不能溢出。 例:例:float i;double c=123456789;i=c; printf(“%f”,i); /结果:结果:i=123456792.000000 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型

41、型 运运 算算 符符 与与 表表 达达 式式 int = char规则:将字符数据规则:将字符数据(8位位)放到整型变放到整型变 量低量低8位中。若字符最高位为位中。若字符最高位为0,则整型变量高,则整型变量高8位补位补0; 若字符最高位为若字符最高位为1,则高,则高8位全补位全补1。P60,图,图3-11 例:例:int a;char ch=376;a=ch; printf(“%d”,a); /结果:结果:a=-2 char=int,short,long 规则:将其低规则:将其低8位原封不动地送位原封不动地送 到到char型变量。(截断)型变量。(截断) 例:例:int i=289;char

42、 c=a;c=i; 00000001 00100001 00100001 i=289 c=33 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 Int=long规则:将规则:将long型数据中低型数据中低16位原封位原封 不动地送到整型变量。(截断)不动地送到整型变量。(截断) 例:例:int a;long b=8;a=b; 0 000000000000000 0000000000001000 0 000000000001000 b=8 a=8 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类

43、 型型 运运 算算 符符 与与 表表 达达 式式 非非unsigned=unsigned规则:要求两者占的字节规则:要求两者占的字节 数相同。将数相同。将unsigned型变量原样送到非型变量原样送到非unsigned型变型变 量中,但如果数据范围超过相应整型的范围,则会出现量中,但如果数据范围超过相应整型的范围,则会出现 数据错误。数据错误。 例:例:unsigned int a=65535;int b; b=a; 1 111111111111111 a b 1111111111111111 结果:结果:b=-1 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型

44、型 运运 算算 符符 与与 表表 达达 式式 unsigned=非非unsigned规则:要求两者占的字节规则:要求两者占的字节 数相同。将非数相同。将非unsigned型变量原样送到型变量原样送到unsigned型变型变 量中,原有的符号位也作为数值一起传送。量中,原有的符号位也作为数值一起传送。 例:例:unsigned a;int b=-1; a=b;printf(“%u”,a); 1 111111111111111 b a 1111111111111111 结果:a=65535 幻灯片幻灯片 28 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运

45、算算 符符 与与 表表 达达 式式 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式 v形式:形式:表达式表达式1,表达式表达式2, ,表达式表达式n v结合性结合性:从左向右从左向右 v优先级优先级: 15 v逗号表达式的值:等于表达式逗号表达式的值:等于表达式n的值的值 v用途:常用于循环用途:常用于循环for语句中语句中 例 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; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表达式

46、值60 /a=15,表达式值20 /赋值表达式,表达式值18,x=18 /逗号表达式,表达式值18,x=3 /1,2,3 /3,2,3 例例: /*example3.6*/ #include main() int x,y=7; float z=4.0; x=(y=y+6,y/z); printf(x=%dn,x); 运行结果:运行结果:x=3 C 语语 言言 程程 序序 设设 计计 第第 三三 章章 数数 据据 类类 型型 运运 算算 符符 与与 表表 达达 式式 小结:小结: C语言常量类型语言常量类型 1)整型常量)整型常量 例如:例如:-225,013,0 x3f 2)实型常量)实型常量 例如:例如:3.14, 2.7e+20 3)字符型常量)字符型常量 例如:例如:a ,C, n 4)字符串常量)字符串常量 例如:例如:“a” ,”yes” 5)符号常量)符号常量 用预定义命令定义。用预定义命令定义。 C语言主语言主 要变量要变量 类型有类型有 1)整型变量)整型变量 用用 int 或或 long 定义定义 例如例如 int a; 以补码形式存在内存中以补码形式存在内存中 2) 字符型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论