C语言程序设计
第三章 C语言基础
主要内容:数据类型、运算符与表达式
Page 1
本章主要内容
? 数据类型
? 算术运算符与算术表达式
? 赋值运算符和赋值表达式
? 逗号运算和逗号表达式
? 逻辑运算与逻辑表达式
? 赋值语句
? 数据输入、输出
? 简单程序举例
数据类型 (p38图 )
? 常量与变量
? 整型数据
? 实型数据
? 字符型数据
? 给变量赋初值
? 不同类型的混合运算
思考:为什么需要定义数据类型?
Page 3
数据类型
—— 常量与变量
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
常量
变量名,
以字母或下划线
开头,由数字,
字母、下划线构
成。最多 31个字
符,多余不识别,
一般小写。
变量
变量先定
义后使用
符号常量
名字常用大写
Page 4
变量的命名方法
变量的名称, 最长 32个字符,建议 8个
见名知意
变量的类型, 需确定
变量的使用, 先定义,后使用
注 意, 大写字母与小写字母表示不同的字符
如 int x,X,abc,Abc;
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
数据类型
—— 整型数据
整型常量
?根据值的大小
自动确定类型。
?无 unsigined型,
但非负数可对
unsigned变量赋
值。
?十进制,123,
- 456
八进制,0开头
十六进制,0x开头 int,unsigned int
2字节
short
unsigned short
2字节
long
unsigned long
4字节
整型变量
整型变量定义
Page 6
数据类型 ——
整型数据的定义及取值范围
类型 定义符 位数 数值范围 I/O格式符
基本 int 16位 -32768~ 32767 %d
短整 short 16 同上 %hd
长整 long 32 -231~ (231-1) %ld
无符号
unsigned [int] 16 0~ 65535 %u
unsigned short 16 同上 %hu
unsigned long 32 0~ (232-1) %lu
数据类型 —— 实型数据
#define PRICE 30
main()
{
int num,total;
float v,r,h;
num=10;
total=num*PRICE;
printf( total=%d,tatal) ;
r=2.5;
h=3.2;
v=3.14159*r*r*h;
printf( v=%f\n,v) ;
}
?十进制形式
?指数形式,123E3
(123× 103 )
?不区分单、双精
度,赋值时截取有
效长度。如,
float a;
a=111111.111;
实型常量 7位有效数字
float 4字节
3.4× 10± 38
7位有效数字
double 8字节
1.7× 10± 308
15位有效数字




Page 8
数据类型 —— 字符型数据(一)
? 转义字符 (p48)
? 字符常量
- 单引号括起来的一个字符,如,'a','D','?','$'
? 字符变量
- 用来存放字符常量
例,char c1,c2;
c1='a';
c2='A';
? 字符数据在内存中的存储形式
- 以 ASCII码存储,占 1字节,用 7个二进制 位
Page 9
? 字符数据的使用方法
- 字符数据和整型数据之间可以通用,可以按
字符形式输出,也可以按整型输出。
C H I N A \0
a \0
a
Page 10
数据类型 —— 字符型数据(二)
例 1
例 3
例 2
- 字符数据与整型数据可以互相赋值。
? 字符串常量
例,"CHINA"
"a"
'a'
所以,char c;
c="a";
数据类型 —— 变量赋初值
? 例,
int a=3;
float f=3.56;
char c='a';
int a,b,c=5;
Page 14
数据类型 p54 —
不同类型数据混合运算时的类型转换
? 数据参加运算前必须进行下列转换,
char,short→int,float→double
? 混合运算时,数据类型由低级 → 高级,
int unsigned long double
低 高
? 例,int i; float f; double d; long e;
运算次序,10+‘a’ + i*f - d/e
① 10+97 ② 转换为 double ④ 转换为 double
再相乘 再相除
③ 107→double
⑤ 结果为 double
Page 15
算术运算符与算术表达式
? C运算符简介
P55
? 基本算术运算符
+ - * / %(取余)
(若整数相除,结果取整 )
? 优先级与结合性
先乘除,后加减,同级自左至右
? 强制类型转换 (级别高于 * /)
例,(double)a,(int)(x+y),(float)(5%3)
变量本身未变化
? ++,-- (P57)
Page 16
例 4
例 5
自增、自减运算符
只能用于变量,不能用于常量或表达式
I=3
j=++I (j=4,I=4)
I=3
J=I++ (I=4,I=3)
减号同理
赋值运算符和赋值表达式
简单的赋值运算符,=”
“=” 两侧类型不一致时,要进行类型转换,
- 整 ← 实:截掉小数部分
- 实(单、双精度) ← 整:数值不变,存为浮点
- 整 ← char:整型低 8位 ← char
整型高 8位 ← 0或符号位扩展 (因机器而不同 )
- long int←int,符号位扩展
- int←long int, int←long int 低 16位
- long int←unsigned int,高位补 0
- 整型 ← (字节数相同的 )unsigned 整型:原样送入。
若超过整型表示范围,会出错。
- unsigned←( 字节数相同的 )非 unsigned整型,
原样送入,符号位也作为数值
Page 21 例 6
赋值运算符和赋值表达式
复合的赋值运算符
?C语言中有 10种复合运算符,
+=,-=,*=,/=,%=,
<<=,>>=,&=,^=,|= (位运算,以后讲 )
?例,a+=3 等价于 a=a+3
x*=y+8 等价于 x=x*(y+8)
Page 23
赋值运算符和赋值表达式
赋值表达式
? 例,
a=5 表达式值为 5
a=b=c=5 表达式值为 5,a,b,c均为 5
a=5+(c=6) 表达式值为 11,a为 11,c为 6
a=(b=4)+(c=6) 表达式值为 10,a为 10,b为 4,c为 6
a=(b=10)/(c=2) 表达式值为 5,a为 5,b为 10,c为 2
a+=a-=a*a 相当于,a=a+(a=a-a*a)
Page 24
赋值语句
? 格式,
赋值表达式;
? 赋值语句与赋值表达式的区别,
赋值表达式可以包含在其它表达式中,
而赋值语句不可。
例,if ((a=b)>0) t=a;
不可写为,if ((a=b;)>0) t=a;
Page 25
逗号运算和逗号表达式
? 格式,
表达式 1,表达式 2
? 求解顺序及结果,
先求解 1,再求解 2,最终结果为表达式 2的值
? 例
a=3*5,a*4 最终结果为 60
Page 26
简单程序举例
P69-82
作业
上机完成,P46 3.4- 3.10
预习:, C程序设计, 第四章
Page 27