第六章 回顾数据类型和表达式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

双目
三目
14
15
=, +=, -=, *=, /=, %=, &=, ^=, |=; >>=; <<=
,
双目
双目
数值方式存放类型数据的混合运算
1、字符型数据、整型数据和实型数据在内存中是按数值方 式存放的,所以这三种类型的数据可以进行混合运算。 2、混合运算原则:在运算过程中,不同的数据类型要先转 换成同一类型后,才能进行运算。 转换规则: double float
双目
三目
14
15
=, +=, -=, *=, /=, %=, &=, ^=, |=; >>=; <<=
,
双目
双目
赋值运算的类型转换
赋值运算时,赋值号右侧表达式的类型自动转换成左侧
变量的类型。 例如:double x=1; 将int型常量1转换成double型1.0后赋给x。
自动转换规则
将浮点型数据赋值给整型变量时,舍弃小数部分; 将整型数据赋值单、双精度变量时,数值不变,但 以浮点数形式存储在变量中; 将一个double型数据赋值给float变量时,截取其 前面7位有效数字,存放到float的存储单元中; 字符型数据赋值给整型变量时,由于字符只占一个 字节,而整型变量占2个字节,因此将字符数据(8 个二进制位)放到整型变量存储单元的低8位中; 符号扩展。 将一个int,short,long型数据赋值给一个char型 变量时,只将其低8位原封不动的送到char型变量
2、十六进制整常数 其前缀为0X或0x,数码取值为0-9,A-F或a-f。 合法十六进制整常数: 0X2A (十进制为42) 0XA0 (十进制为160) 0XFFFF (十进制为65535) 非法十六进制整常数: 5A (非前缀0X) 0X3H (含有非十六进制数码)
3、十进制整常数: 没有前缀,其数码为0~9。 合法十进制整常数: 237 -568 65535 非法十进制整常数: 023 (不能有前导0) 23D (含有非十进制数码)
初等运算符 单目运算符 算术运算符 关系运算符 逻辑运算符

除赋值外的双目 ,均自左至右结 合
条件运算符 赋值运算符 逗号运算符

优先级 1 2 3 4 5 6 7 8 9 10 11 12 13
1. 算术运算
运算符 (), [], .,->
特征 双目 单目
!, ~, +(正号), -(负号), *, &, ++, --, sizeof *, /, % , +, <<, >> <, <=, >, >=, ==, != &, ^, | &&, || ?:
字符型
单精度型
实型(浮点型) 双精度型
数组 数据类型 构造数据类型 结构 联合 指针类型 枚举
空类型
1、C语言基本类型及其修饰符的所有组合的取值范围
类型 char unsigned char signed char int unsigned int 二进制位长度 8 8 8 16 16 值域 -128~127 0~255 -128~127 -32768~32767 0~65535
其十进制为165
实型常量
实型-浮点型,实型常量也称实数或浮点数。 书写上,采用十进制,两种形式:小数形式、指数形式 1、小数形式:由数码0~9和小数点组成。 合法小数形式:0.0, .25, 5.789, 0.13, 5.0, 300. -267.8230 2、指数形式:一般形式aEn(a带符号十进制数,E或e阶码 标志,阶码n十进制整数),其值为a*10n 合法指数形式: 2.1E5 3.2E-2 0.5E7 2.8E-2 非法指数形式: 345 E7 .5 53.-E3 2.7E 规范化指数形式:阶码前的小数部分小数点左侧有且仅有一 位非零数字。
优先级 1 2 3 4 5 6 7 8 9 10 11 12 13
C语言运算符及优先次序
运算符 !, ~, +(正号),
特征 双目 单目
初等运算符 -(负号), *, &, ++, --, sizeof 单目运算符 *, /, % , +, 算术运算符
(), [], .,-> <<, >>
<, <=, >, >=, ==, !=关系运算符 &, ^, |
双目
14
15
=, +=,
逻辑运算符 ?: 条件运算符 -=, *=, /=, %=, &=, ^=, |=; >>=; <<= 赋值运算符 , 逗号运算符
&&, ||
三目
双目
双目
运算符的优先级与结合 顺序:C运算符的优先级分为15
级。表达式中,高优先级先于低 优先级运算。运算量两侧的运算 符优先级相同时,按运算符的结 合方向处理。
算术运算的类型转换
双目运算符两侧操作数要求类型相同,否则,系统自
动进行类型转换,而后再运算。 例如:10.0/4,先自动转换为10.0/4.0,结果为2.5。 再如: char ac=„a‟; int bi=100; double d=2.5; =194.5 ac+bi-d;
int double
一、c语言中的数据类型
数据类型是基本数据类型加类型修饰符 基本数据类型:字符型(char)、整型 (int)、单精度实型(float)、双精度实型 (double) 类型修饰符:有符号(signed)、无符号 (unsigned)、长(long)、短(short)
C语言中的数据类型
整型
基本数据类型
优先级 1 2 3 4 5 6 7 8 9 10 11 12 13
2、赋值运算
运算符 (), [], .,->
特征 双目 单目
!, ~, +(正号), -(负号), *, &, ++, --, sizeof *, /, % , +, <<, >> <, <=, >, >=, ==, != &, ^, | &&, || ?:
赋值运算的类型转换
赋值运算时,赋值号右侧表达式的类型自动转换成左侧
变量的类型。 例如:double x=1; 将int型常量1转换成double型1.0后赋给x。 赋值号两侧的类型最好相同,至少右侧数据类型比左侧 低,否则,如果赋值号右边的表达式类型比左侧级别高, 运算精度会降低。 例如:int ai=2.56; 将实型2.56转换成整型2,失去小数点以后的数,再 赋给ai,则ai=2。

long unsigned

int
char, short
先进行水平方向上的转换,任何时候都要进行 再进行纵向的类型转换,仍然存在不同类型的数据
数据类型混合运算的例子
int i; float f; double d; long e; 1)运算10+‟a‟ 将a转换为97,结果为107 2)运算i*f i与f转成double型,结果double型。 3)运算107+i*f 先转换107为double型(小数点后加0,即107.0…00), 结果为double型
练习2
已知字母a的ASCII码为十进制数97,设ch为char型变 量,则表达式ch=‘a’+’7’-’2’的值为(),表达式 f f ch=‘a’+7-2的值为(),若 ch为int型变量表达式 102 ch=‘a’+’7’-’2’的值为()
3、强制类型转换运算
优先级 1 2 3 4 5 运算符 (), [], .,-> !, ~, (t),+(正号), -(负号), *, &(取地址), ++, --, sizeof *, /, % , +, <<, >> 特征 双目 单目
练习
计算机中的黑白数字图像通常采用取值为0~255的正 整数表示一个像素的灰度级别,用C语言处理这种图 像时,用于表示像素的最节省内存空间的变量形式应 unsigned char 类型的数据。 定义为_______ _______
2、整型与实型常量的书写
C使用的整常数有八、十六、十进制三种。 1、八进制整常数 必须以0开头,即以0作为八进制数的前缀。数码取值为 0 ~ 7。 合法八进制数:015 (十进制为13) 0101 (十进制为65) 0177777 (十进制为65535) 非法八进制数:256 (非前缀0) 03A2 (包含了非八进制数码)
1627
程序根据前缀区分各种进制数,不要把前缀弄错造成结 果不正确。
整型常数的后缀
使用的数超过取值范围,须用长整型数来表示(后缀 “L”或“l”)。在内存中占四个字节(取值在- 2147483648~217483647之间)。 无符号数用后缀“U”或“u”表示 例如: 十进制长整常数: 158L 十进制无符号整常数: 158U 长整数158L和基本整常数158在数值上无区别; 对长整型常量158L,系统分配4个字节存储空间; 对基本整型158,分配2个字节存储空间
一般形式: (类型名) 表达式; 例如:(int)3.8 将3.8转换成int型,得到3。 强制类型转换不改变数据的定义
练习
(int) 3.8+1.3的结果是:
4.3 (int) (3.8+1.3)的结果是: 5
优先级 1 2 3 4 5 6 7
4、改变求值顺序运算
运算符 (), [], .,-> !, ~, (t), +(正号), -(负号), *, &(取地 址), ++, --, sizeof *, /, % , +, <<, >> <, <=, >, >=, ==, !=
练习1
编写程序运行下列代码的结果: 整型->实型 数值不变 int a=2; float b=a; float a=2.5; int b=a; 实型->整型 舍弃小数部分 char a=-2; int b=a; 字符型->整型 数值不变,符号扩展 int a=-2; long int b=a; 整型->长整型 数值不变,符号扩展
float double long double
32
32 64 128
0~4294967295
3.4e-38~3.4e+38(绝对值) 1.7e-308~1.7e+308(绝对值) 1.0e-4931~1.0e4932(绝对值)
查看数据类型存储大小
# include<stdio.h> main() { printf来自百度文库"%d\n", sizeof(double)); getch(); }
6 7
8 9 10 11 12 13 14 15
<, <=, >, >=, ==, !=
&, ^, | &&, || ?: =, +=, -=, *=, /=, %=, &=, ^=, |=; >>=; <<= ,
双目
三目 双目 双目
3. 强制类型转换运算
自动类型转换 类型转换 非赋值运算类型转换 赋值运算类型转换 强制类型转换:使用强制类型转换运算符 ,将一个表达式转换成给定的类型。
signed int
short int unsigned short int signed short int long int
16
16 16 16 32
-32768~32767
-32768~32767 0~65535 -32768~32767 -2147483648~2147483647
unsigned long int
整型常数后缀的说明
前缀后缀可同时使用
例如,012L
077L 0200000L 0X15L 0X10000L 235Lu 0XA5Lu表示
八进制长整常数,十进制为10 八进制长整常数,十进制为63 八进制长整常数,十进制为65536 十六进制长整常数,十进制为21 十六进制长整常数,十进制为65536 以无符号常整型方式存储235 十六进制无符号长整数A5
误。
练习
二、c语言中的运算
一、运算相关概念 1、运算:对数据进行加工的过程。 2、运算符:记述各种不同运算的符号。 3、目:操作数(运算量),即参加运算的数据。 4、表达式:由运算符和运算对象(操作数)组成的有 意义的运算式子。 二、运算符
C共有34种运算符,灵活使用各种运算符实现其它高级语言 中难以实现的运算。
特征 双目 单目
双目
8 9 10
11 12
&, ^, |
&&, ||
13
14 15
?:
=, +=, -=, *=, /=, %=, &=, ^=, |=; >>=; <<= ,
三目
双目 双目
4、改变求值顺序
()运算符 使用圆括号来清晰的表达运算次序 改变程序中求值顺序
多余圆括号不会降低表达式运行速度,也不会引起错
相关文档
最新文档