1
第三章 数据类型、运算符和表达式主讲 福州大学数学与计算机学院 韩晓芸
E-mail,hxy@fjtv.net
第三章 数据类型、
运算符和表达式
2
第三章 数据类型、运算符和表达式
第一节 C的 数据类型
第二节 常量
第三节 变量
第四节 算术运算符和算术表达式
第五节 赋值运算符和赋值表达式
第六节 逗号运算符和逗号表达式
第七节 各类数据间的混合运算第三章 数据类型、
运算符和表达式
3
第一节 C的 数据类型
基本类型
– 整型
– 字符型
– 实型(浮点型)
单精度、双精度
构造类型
– 数组类型
– 结构体类型
– 共用体类型
指针类型
空类型第三章 数据类型、
运算符和表达式
4
第一节 C的 数据类型
说明:
1) 标识符,是指用来 标识程序中用到的 变量名,函数名,类型名,数组名,文件名 及 符号常量名 等的有效字符序列。 标识符的命名规则是,由字母(大小写)、数字及下划线组成,
且第一个字符必须是字母或下划线 。(举例说明标识符的合法性判定)
2) C语言 英文大小写不同,并把下划线定义为字母,故有 53个 字母。
第三章 数据类型、
运算符和表达式
5
第一节 C的 数据类型
说明:
3) 关键字(也称保留字) 是 C语言中预先定义的标识符,用来命名 C语言程序中的 语句,
数据类型 和 变量属性 等 。有固定的意义,不能重新说明,不能作用户定义符使用。一共有 32
个 。都用 小写字母 表示。
第三章 数据类型、
运算符和表达式
6
第一节 C的 数据类型
说明:
4) 常量 又称常数,是指在程序运行过程中 其值不能改变 的量,常量分为不同的类型。
5) 变量 是指在程序运行过程中 其值可以被改变 的量。不同类型的变量在内存中占不同的存储单元,以便用来存储相应的变量的值。
第三章 数据类型、
运算符和表达式
7
第二节 常量常量包括 直接 常量(或称 字面 常量)和 符号 常量。 直接常量有 整型常量,实型常量,字符常量与 字符串常量 。
2.1 符号常量
2.2 整型常量
2.3 实型常量
2.4 字符型常量
2.5 字符串常量第三章 数据类型、
运算符和表达式
8
2.1 符号常量用标识符表示的常量称为符号常量。 习惯上,符号常量名用 大写,如 PI,MIN。符号常量要 先定义,后使用 。
注意,
1) 符号常量 不同于变量,值在其所在的函数内不能改变。
2) 使用符号常量可以 使程序清晰,修改容易 。
第三章 数据类型、
运算符和表达式
9
2.1 符号常量符号常量是用宏替换 #define 定义:
例 #define PI 3.1415 #define LETTER ‘x’ 均合法。
例 #define A 100 ; #define A,B 26 均不合法。
例 1,#define PI 3.14159
main( )
{float r,s,area;
scanf("%f",&r);
s=2*PI*r;
area=PI*r*r;
printf("s=%7.2f,area=%7.2f",s,area);
}
第三章 数据类型、
运算符和表达式
10
有以下三种数制形式表示:
十进制:如 123; -60; 0
八进制:以 0开始,如 0123表示( 123) 8
十六进制:以 0x开始,如 0x123表示 ( 123) 16
2.2 整型常量第三章 数据类型、
运算符和表达式
11
2.3 实型常量
小数形式,由数字、数符和小数点组成。
注意必须有小数点。
如 123.0,123 0.0 12.5
指数形式,数字部分 e指数部分。
字母 E/e前必须有数字,字母 E/e后必须为整数( 1~3位)。
如 123e2 123E2
第三章 数据类型、
运算符和表达式
12
⑴ 字符常量是用 单撇号 括起来的一个字符。
例如,'a','x','d','?','['
字符常量的值实际上是一个数字值。如字符常量 ' 0 ',其 ASCII为 48,所以存储的实际值为
48。
字符常量可以 象整数一样参与运算。
2.4 字符型常量第三章 数据类型、
运算符和表达式
13
⑵ 转义字符:
将反斜杠后面的字符转变成另外的意义例,‘ \n?表示换行符,‘ \\?表示字符
‘ \?。
转义字符 功能 转义字符 功 能
\a 响铃 \\ 反斜杠字符
\b 退一格 \' 单引号字符
\f 走纸换页 \" 双引号字符
\n 换行 \? 问号
\r 回车 \t 横向跳格
\ddd 1~ 3位 8进制数代表的字符
\xhh 1~ 2位 16进制数代表的字符
2.4 字符型常量第三章 数据类型、
运算符和表达式
14
⑵ 转义字符:
将反斜杠后面的字符转变成另外的意义例:
’ \101?,代表 ASCII码值 65的字符 A,
’ \x41?,也代表 ASCII码值 65的字符 A。
而 ’ \0?,表示空操作,字符串结束符。
printf (“\”D,\\xao.wps\””);
输出,D,\ xao.wps”
2.4 字符型常量第三章 数据类型、
运算符和表达式
15
main()
{char c1='\101',c2= '\x42';
printf("a\tbc\t\bABC\n");
printf("xyz\t%c %c",c1,c2);}
结果? a bc ABC xyz A B
例 2:
第三章 数据类型、
运算符和表达式
17
2.5 字符串常量
字符串常量是用一对 双引号 括起来的字符序列。
如,,CHINA”,,a,,,X+Y,。
字符串常量在内存中的存放:每一个字符均以其 ASCII码存放,且 最后添加一个,\0” 作为字符串的结束标志例:字符串常量,CHINA”存放在内存中的情况是:
C H I N A \0
第三章 数据类型、
运算符和表达式
18
因此,字符常量‘ a?和字符串常量,a”的区别是:
字符‘ a?,1字节(值为 97)
字符串,a”,2字节(值为 97,0)
注,
在表达一个字符串时,要时刻记着尾部有个
‘ \0?字符结束整个字符串。
2.5 字符串常量第三章 数据类型、
运算符和表达式
19
第三节 变量
3.1 变量的概念
3.2 变量名
3.3 整型变量
3.4 实型变量
3.5 字符型变量第三章 数据类型、
运算符和表达式
20
3.1 变量的概念
程序运行过程中其值可以改变的量,称为变量 。 系统为程序中的每一个变量开辟一个存储单元,如:
main( )
{ int a;
a=2; printf("a=%d\n",a);
a=4; printf("a=%d\n",a);
}
程序运行结果?
3
a
变量名变量值存储单元图示:
第三章 数据类型、
运算符和表达式
21
3.2 变量名变量有两个要素,
1)变量名,每个变量都必须有一个名字,即变量名。 变量名由字母、数字和下划线组成,且第一个字符必须是字母或下划线。 如果是字母通常使用小写字母,不使用大写字母。
如,name,no,x,k,i,j,stu_name等。
变量名中不能含有 运算符,括号 等 。命名遵循顾名思义原则,且不宜过长。 C区分大小写字母。
第三章 数据类型、
运算符和表达式
22
3.2 变量名变量有两个要素,
2)变量值,每个变量都有特定的值,且可以改变。 在程序中,通过变量名来引用变量的值 。
变量以变量名为标志,在内存中占据一定的存储单元,在该存储单元中存放变量的值。每个变量占用若干字节,具体与计算机系统有关。
系统以变量名来区别不同变量,可以引用变量名代表其存储单元,为其赋值;也可以引用变量名代表其值,使用该变量的值。 如何区分?
第三章 数据类型、
运算符和表达式
23
3.2 变量名变量的定义
所有的变量必须在赋值使用之前定义。 定义变量的一般形式是,
type variable_list; (变量定义语句 )
注,
type为 C语言中有效类型 ;
variable_list为变量列表,多个变量之间用,
隔开。
如,int i,j,k; float a;
第三章 数据类型、
运算符和表达式
24
3.2 变量名
变量名,先定义,后使用” 的目的是:
1,凡 未被事先定义的,不能作为变量名,这可以保证变量名使用的正确。
2,每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。
3,指定每一个变量属于一个类型,便于在编译时,
据此 检查该变量所进行的运算是否合法。
第三章 数据类型、
运算符和表达式
25
3.3 整型变量
1、分类
[signed] int 整型
[signed] short [int] 短整型
[signed] long [int] 长整型
unsigned int 无符号整型
unsigned short [int] 无符号短整型
unsigned long [int] 无符号长整型第三章 数据类型、
运算符和表达式
26
2,各类型数据长度,取值范围
数据类型 所占位数 取值范围
int 16 -32768~ 32767
short 16 -32768~ 32767
long 32 -21亿~ 21亿
unsigned int 16 0~ 65535
unsigned short 16 0~ 65535
unsigned long 32 0~ 42亿第三章 数据类型、
运算符和表达式
27
3、整型变量的定义
所有的变量需先定义类型
int a,b,c; /*指定 a,b,c为整型变量 */
unsigned count; /*指定 count为无符号整型变量 */
long s; /*指定 s为长整型变量 */
有些变量可以预先设置初值:
int a=0,b,c; /*指定 a,b,c为整型变量,a的初值为 0*/
int a=0,b=0,c=0;
/*指定 a,b,c为整型变量,a,b,c的初值为 0*/
第三章 数据类型、
运算符和表达式
28
4、整型数据在内存中的存放形式
定义一整型变量 i
int i=10; /*指定 i为整型变量,并赋以整数 10*/
每一个整型变量在内存中占 2个字节,数值是以补码表示的
数据存放示意图
数据在 内存中 的存放示意图 i 10
i 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
第三章 数据类型、
运算符和表达式
29
4、整型数据在内存中的存放形式
定义一整型变量 i
int i=-10; /*指定 i为整型变量,并赋以整数 -10*/
数据存放示意图
数据在内存中的存放示意图将该数的绝对值的二进制形式,按位取反再加 1
i -10
10 的原码 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
取反得 -10
的 反码 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
再加 1,得 -10
的 补码 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
第三章 数据类型、
运算符和表达式
30
5、举几个简单例子例 4:
#include“stdio.h”
void main()
{ int a,b,c,d; unsigned int u ;
a=12; b=-24; u=10;
c=a+u; d=b+u ;
printf(,a+u= %d,b+u=%d\n”,c,d) ;
}
运行结果输出 a+u=22,b+u=-14
第三章 数据类型、
运算符和表达式
31
5、举几个简单例子例 5,整型数据的溢出。
#include“stdio.h”
void main()
{ int a,b;
a=32767; b=a+1;
printf(,%d,%d\n”,a,b) ;
}
运行结果输出 32767,-32768
若把 70000赋值就发生溢出。
第三章 数据类型、
运算符和表达式
32
6、练习题请编写程序 szys.c,输入两个整数 n和 m,计算以下表达式的值,
sum=n+m
diff=n-m
prod=n*m
quot=n/m
上机时调试完成。
第三章 数据类型、
运算符和表达式
33
3.4 实型变量
1、分类 所占位数 取值范围
float 单精度 32 -3.4*10-38 ~3.4*1038
double 双精度 64 -1.7*10-308 ~1.7*10308
long double长 双精度 128 -1.2*10-4932 ~1.2*104932
2、变量的定义
float x,y; /*指定 x,y为单精度实型变量 */
double z; /*指定 z为双精度实型变量 */
第三章 数据类型、
运算符和表达式
34
3.4 实型变量
3、说明举例在 PC机中,float占内存 4个字节,double占 8个字节。 float的有效数字 6-7位,double 的有效数字 15-16
位,long double的有效数字 18-19位。
例 6,实型数据的舍入误差。
#include“stdio.h”
void main()
{ float a,b;
a=123456.789e5; b=a+20 ;
printf(,%f\n”,b) ;}
运行结果输出 12345678848.000000 仅前 8位是正确。
第三章 数据类型、
运算符和表达式
35
3.4 实型变量
3、说明举例在 PC机中,float占内存 4个字节,double占 8
个字节。 float的有效数字 6-7位,double 的有效数字 15-16位,long double的有效数字 18-19
位。
例 7,实型数据的舍入误差。
void main()
{ float s=2.5555; ( s=2.5558)
s=s*s; //四舍五入有效数字
printf(“s=%f”,s); }
请注意运行结果 。
第三章 数据类型、
运算符和表达式
36
3.4 实型变量练习题:
请输入 x,计算以下表达式的结果。
fun1(x)= ──── - ────2xx + 1.21 2x - 1.54
第三章 数据类型、
运算符和表达式
37
3.5 字符变量
1、变量的定义
char c1,c2; /*指定 c1,c2为字符型变量 */
2、字符型数据的存储一个字符变量在内存中占一个字节,并以 ASCII码存储,存储形式与整型一样,可以和整数进行运算。
例 8,main()
{char c1,c2;
c1=?a?;c2=?b?;
c1=c1-32;c2=c2-32;
printf(“%c,%c\n”,c1,c2);
printf(“%d,%d\n”,c1,c2);}
结果:
A,B
65,66
第三章 数据类型、
运算符和表达式
38
3.5 字符变量
3,字符数据与整型数据可互相赋值例 9,#include“stdio.h”
void main()
{ int i; char c; c=97;
i=?c?;
printf(,%c,%d \n”,c,c) ;
printf(,%c,%d \n”,i,i) ; }
输出,a,97
c,99
第三章 数据类型、
运算符和表达式
39
3.5 字符变量
3,字符数据与整型数据可互相赋值说明:
ASCII字符中的标准字符(码值为 0---127)
的最高位(即最左位)为 0,按整数输出为正值,若使用 码值为 128---255的字符其在内存中最高位为 1,如 254的二进制表示 11111110,
‘ \376?被看成负数,若按整数输出如下:
char c=?\376?; printf(,%d,,c);
输出 -2 ; 因为 –2的补码为 11111110 。
第三章 数据类型、
运算符和表达式
40
第四节 算术运算符和算术表达式
C运算符
C语言中有以下几类运算符:
1) 算术运算,+,-,/,*,%(模运算)
2) 关系运算,<,>,==,>=,<=,!=
3) 逻辑运算,!,&&,||
4) 位运算,<<,>>,~,|,^,&
另外,还有一些很重要的运算,以后逐渐进行讲解。
第三章 数据类型、
运算符和表达式
41
第四节 算术运算符和算术表达式
4.1 基本 算术运算符
4.2 运算符的优先级和结合性
4.3 自增、自减运算符第三章 数据类型、
运算符和表达式
42
4.1 基本 算术运算符
+ (加法运算或正号运算符)
- (减法运算或负号运算符)
* (乘法运算符)
/(除法运算符)
% (求余运算符,或称模运算符)
第三章 数据类型、
运算符和表达式
43
- (负号运算符)
* / %
+ - (加减运算符)
我最高!
我最低!
第三章 数据类型、
运算符和表达式
44
4.1 基本 算术运算符注:
(1) 两个整数相除结果为整数,多数机器采用“向零取整”方法。 如,5/3=1 ; -5/3=-1
(2) 参与 +,-,*,/运算的两个数中有一个为实数,
则结果为 double型。如,6/2.0的结果为 3.0
(3) 模 %运算符 (或称 求余 运算符 )两侧的运算量均为整型量 。如,55%12
第三章 数据类型、
运算符和表达式
45
从左到右
4.2 运算符的优先级和结合性
算术表达式
– 用 算术运算符和括号 将运算对象连接起来的、符合
C语法规则的式子称为 C算术表达式 。运算对象包括 常量、变量和函数 等。
运算符有优先级和结合性
– 在求表达式的值时,要按照 优先级的高低依次 计算
– 如果运算符两侧 优先级相同,则按规定的 结合方向进行。
算术运算符的结合方向第三章 数据类型、
运算符和表达式
46
4.2 运算符的优先级和结合性书写表达式应注意以下几点:
1) 乘号不能省 。 如,ab应写成 a*b
2) C语言中 只有圆括号,可以嵌套使用,
但左、右括号 必须匹配。
3)避免两个运算符 并置 。如 a*b/-c应写为,a*b/(-c)
第三章 数据类型、
运算符和表达式
47
4.2 运算符的优先级和结合性书写表达式应注意以下几点:
4)由于 两个整数相除 结果仍为整数,所以要转换成实数运算。如 5/12应该写成 5.0/12或
5/12.0
5) 三角函数 的自变量使用弧度。如 sin50?应写成 sin(50*3.1415926/180)
例,3x2+4xysin56?-|x-y|e2.3 的表达式为:
3*x*x+4*x*y*sin(56*3.14/180)
-fabs(x-y)*exp(2.3)
第三章 数据类型、
运算符和表达式
48
4.3 自增、自减运算符
++运算符的作用是使变量的值增 1。
--运算符的作用是使变量的值减 1。
常见的用法有:
++i,--i 在使用 i前,使 i的值加(减) 1
i++,i-- 在使用 i后,使 i的值加(减) 1
第三章 数据类型、
运算符和表达式
49
已知 i=5
( 1) j=i++; j=? i=?
( 2) j=++i; j=? i=?
5 6
6 6
4.3 自增、自减运算符第三章 数据类型、
运算符和表达式
50
例,int x,y,z; x=y=2; z=3;
y=x++ -1;( x=3,y=1)
y=++x -1;( x=4,y=3)
y=z-- +1; ( z=2,y=4)
y=--z +1; ( z=1,y=2)
4.3 自增、自减运算符第三章 数据类型、
运算符和表达式
51
注意:
1) ++,-- 运算符只适用于对 整型变量 操作,
而不能作用于常量或表达式,如 5++ 或
(a+b)-- 是错误的。
2) ++,-- 的结合方向是 自右到左 。如 j=3;
printf(”%d”,-j++); 则输出 -3,后使 j值增为 4。
3) 使用 ++,-- 会出现付作用。 (易出错 )
4.3 自增、自减运算符第三章 数据类型、
运算符和表达式
52
思考:
1,(i++)+(i++)+(i++)结果?
2,(++i)+(++i)+(++i)结果?
3,i+++j是 (i++)+j还是 i+(++j)? (p59)
4,printf(“%d,%d”,i,i++)结果 (p59)
建议,在使用自增和自减运算时使用括号,以免生成错误 ( 不确定 ) 的结果 。
第三章 数据类型、
运算符和表达式
53
第五节 赋值运算符和赋值表达式
5.1 赋值运算符
5.2 复合的赋值运算符
5.2 赋值表达式第三章 数据类型、
运算符和表达式
54
5.1 赋值运算符
简单的赋值就是把 一个表达式的值 赋给一个变量。
例如:
i = 5
i = j + 1
第三章 数据类型、
运算符和表达式
55
5.3 赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。
形式:
〈 变量 〉〈 赋值运算符 〉〈 表达式 〉
例如,x=3
y=x+3
对赋值表达式求解的过程是,将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。
结合性 从右向左第三章 数据类型、
运算符和表达式
56
注意:
一般形式的赋值表达式中的“表达式”又可以是一个赋值表达式。如:
a=b=8按照 从右到左 的结合性等价于 a=(b=8)
假设,int a,b,c; a=b=c=5;
分析下列赋值表达式的计算过程:
① a=5+(c=6)
② a=(b=4)+(c=6)
③ a=(b=10)/(c=2)
④ (a=3*5)=3*4
⑤ a=1/b=2
第三章 数据类型、
运算符和表达式
57
5.2 复合的赋值运算符
在赋值符,=”之前加上其它运算符,可以构成 复合的运算符
<变量 >运算符 =<表达式 > 等价于
<变量 >=<变量 >运算符 <表达式 >
如,m+=n*3 等价于 m=m+(n*3)
第三章 数据类型、
运算符和表达式
58
5.2 复合的赋值运算符
运算符 可以是 二元 运算符,如四则运算符、移位运算符、逻辑运算符等。
再例如:
i + = 2 等价于 i = i + 2
a * = b + 5 等价于 a = a * (b + 5)
x% = 3 等价于 x = x%3
第三章 数据类型、
运算符和表达式
59
注意:
赋值表达式也可以包含复合的赋值运算符 。
设 a的值为 6,计算 a+=a-=a*a
先 进行 a*a的计算,结果为 36
再 进行 a-=36的计算,相当于 a=a-36=-30
最后 进行 a+=-30的计算,相当于 a=a-30=-60
问,j=k+=32*k合法吗?什么结果
printf(“%d”,i=20); 又是如何呢?
第三章 数据类型、
运算符和表达式
60
5.4 赋值时进行的类型转换
将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。
例 int i=3.56; 结果 使 i的值为 3 。
将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。
例 float f=23 ; 结果 使 f的值为 23.000000
例 double d=23;
则以 23.00000000000000存储,扩展 16位有效数字。
将一个 double型数据赋给 float变量时,截取其前面 7位有效数字,存放到 float变量的存储单元( 32位)中。
将一个 float 型数据赋给 double变量时,数值不变,有效位数扩展到 16位,在内存中以 64位存储。
第三章 数据类型、
运算符和表达式
61
5.4 类型转换
字符型数据赋给整型变量时,由于字符只占 1个字节,而整型变量为 2个字节,因此将字符数据
( 8位)放到整型变量低 8位中。具体分为以下两种情况:
若系统将字符处理为无符号的量,则将字符的 8位放到整型变量的低 8位,高 8位补 0。
例 c=?\376?; 11111110 => 0000000011111110
若系统将字符处理为带符号的量,如果字符最高位为 0,则整型变量高 8位补 0;如果字符最高位为 1,则整型变量高 8位补 1。这样做的目的是使数值保持不变。
例 c=?\376?; 11111110 => 1111111111111110
第三章 数据类型、
运算符和表达式
62
5.4 类型转换
将一个 int,short,long型数据赋给一个 char型变量时,只将其 低 8位 原封不动地送到 char型变量(即截断)。
例,i=289 得到字符‘ !?
将带符号的整型数据赋给 long型变量时,要进行符号扩展,将整型数的 16位送到 long型变量的低
16位中,如果 int型数据为正值,则 long型变量的高 16位补 0; 如果 int型数据为负值,则 long型变量的高 16位补 1。 以保持数值不变。
例,k=8; (k=-8);
第三章 数据类型、
运算符和表达式
63
5.4 类型转换
若将一个 long型数据赋给一个 int型变量,只将
long型数据中的低 16位原封不动地送到整型变量中(即截断)。
例:
int a;
long b=8;
a=b;
结果 a=8
int a;
long b=65536;
a=b;
结果 a=0
第三章 数据类型、
运算符和表达式
64
5.4 类型转换
将 unsigned int型数据赋给 long int型变量时,
不存在符号扩展问题,只需将高位补 0。
将 unsigned 类型数据赋给一个占字节数相同的整型变量时,是将 unsigned型变量的内容照原样送到非 unsigned型变量中,但如果数据范围超过相应的整型范围,则会出现数据错误。
例如,main()
{unsigned int a=65535;
int b; b=a;
printf(“%d”,b);}
第三章 数据类型、
运算符和表达式
65
5.4 类型转换
将非 unsigned int型数据赋给长度相同的
unsigned型变量时,也是原样照赋(连原有的符号位也作为数值一起传送)。
例 10,main()
{unsigned a;
int b=-1;
a=b;
printf(“%u”,a);}
运行结果为,65535
第三章 数据类型、
运算符和表达式
66
第六节 逗号运算符和逗号表达式
在逗号表达式中,逗号是一种运算符。
形式如下,
表达式 1,表达式 2
由逗号隔开的一对表达式 从左向右 进行计算,
其求解过程为,先求解表达式 1,再求表达式 2,
整个逗号表达式的值是表达式 2的值 。
逗号运算符是所有运算符中级别最低的。
第三章 数据类型、
运算符和表达式
67
例如
a=4*6,a+5 整个逗号表达式的值为 29
注意
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:
( a=4*6,a+5),a+6 整个表达式的值为 30
第三章 数据类型、
运算符和表达式
68
第七节 各类数据间的混合运算
C语言 允许数据值从一种类型转换成另一种类型。 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 转换的规则按图所示。
高 double float
long
unsigned
低 int char,short
第三章 数据类型、
运算符和表达式
69
第七节 各类数据间的混合运算
说明:
– 横向 向左的箭头表示当运算对象为不同类横向向左的箭头表示 必定 的转换,如字符型
(char)数据和短整型 (short)数据必定先转换成整型 (int),float型数据在运算时一律先转换为双精度型 (double),以提高运算精度。
– 纵向 的箭头表示当运算对象为不同类型时转换的方向型时转换的方向。数据总是 由低级别向高级别 转换。
第三章 数据类型、
运算符和表达式
70
C语言提供一种,强制类型转换,运算符,将一个类型的变量强制转换为另一种类型 。
一般形式为:
( 类型标识符 ) ( 表达式 )
例如:
k=(int)((int)x+(float)i) /*得到整型数 */
(float)(x=85) /*得 实型单精度数 */
第三章 数据类型、
运算符和表达式
71
再例如:
若 x原为实型变量且值为 2.6,在执行
i=(int)x
后得到一个整数 2,并把它赋给整型变量 i,
但 x仍为实型,值为 2.6。
第三章 数据类型、
运算符和表达式
72
作业:
1,请输入 x,计算以下表达式的结果。
y= ─── + ───
2,输入两个自然数,求它们的商和余数。
3,输入一个自然数,判断该数是否能够被 3和 7
同时整除。
sin(x) e2+1
x2 2x
第三章 数据类型、
运算符和表达式
73
休息一会儿。。。