[工学]c语言_第2章

上传人:tia****nde 文档编号:70786878 上传时间:2019-01-18 格式:PPT 页数:40 大小:463.31KB
返回 下载 相关 举报
[工学]c语言_第2章_第1页
第1页 / 共40页
[工学]c语言_第2章_第2页
第2页 / 共40页
[工学]c语言_第2章_第3页
第3页 / 共40页
[工学]c语言_第2章_第4页
第4页 / 共40页
[工学]c语言_第2章_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《[工学]c语言_第2章》由会员分享,可在线阅读,更多相关《[工学]c语言_第2章(40页珍藏版)》请在金锄头文库上搜索。

1、第2章 C语言的基本数据类型与表达式,2.1 C语言的基本数据类型 2.2 常量与变量 2.3 运算符与表达式 2.4 数据类型转换,2.1 C语言的基本数据类型 为什么要设置数据类型? 数据类型决定: 1.数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,一、数据类型概述,二、整型(采用定点整数的存储格式,只能表示纯整数),1、整型常量: (1) 十进制形式:与数学上的整数表示相同; 例如: 12=1*101+2*100=12(十进制) (2) 八进制形式:在数码前加数字0; 例如: 012=1*81+2*80=10(十进制) (3) 十六进制形式:在数码前加0X(数字0和字母X

2、)。 例如: 0x12=1*161+2*160=18(十进制) 0x1fc=1*162+15*161+11*160=507(十进制),八进制的数码范围为0-7,十六进制的数码除了数字0-9外,还使用英文字母a-f(或A-F)表示10-15。,2、整型变量的分类:,根据数据所占的存储长度的不同分为: int整型、short int短整型、long int长整型; 同样存储长度的数据又分: unsigned无符号、signed有符号(通常省略);,关键字 所占位数 取值范围 short 16 -3276832767 unsigned short 16 065535 Int 16 -32768327

3、67 Unsigned int 16 065535 Long 32 -21474836482147483647 unsigned long 32 04294967295,思考:int a=20000,b=20000,c; c=a+b;,三、实型,1、常量: (1) 十进制小数形式:由数字和小数点组成; 例如: 3,3.4,4.,.3,. (2) 指数形式: “十进制小数”+“e(或E)”+“十进制数整数”。 例如: 12.5e-6 表示12.510-6 。 6E0.2 , e5 ,2、实型变量的分类及值域: 关键字 字节数 取值范围 精度(位) float 4 -3.410383.41038

4、7 double 8 -1.7103081.710308 15,四、字符类型,1、字符常量 (1)用单引号括起来的一个字符: 如:A、 a 、1 、?等。 (2)用单引号括起来的由反斜杠()引导的转义字符。,反斜杠 a警告 b退格 f换页 n换行 r回车 t横向跳格 v垂直跳格 单引号 ”双引号 0 空字符:不计入字符串长度,读取到第1个0时就认为字符串结束,不再继续向后面读取和统计。 ddd 1到3位8进制数表示的ASCII码对应的字符 xhh 1到2位16进制数表示的ASCII码对应的字符,字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八进制) 字符A可表示为A

5、、x41、101 字符a可表示为a、x61、141 97D(十进制)=61H(十六进制)=141Q(八进制) 字符8可表示为8、x38、70 56D(十进制)=38H(十六进制)=70Q(八进制) 2、字符变量(标识符为char) 每个字符型数据在内存中占1个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)。 字符型可参与数学运算,也可看成一种1字节的整型变量。,3、字符串常量: 是用一对双引号括起来的字符序列。 注意:每个字符串的后面都有一个0结束符(通常省略)。 如:“SHANGHAI”,“AbcdeFGHijk”,“How are you”。,字符常量与字符串常量不同,字

6、符串“hello”在内存中,空串“”在内存中,0,4、字符串变量(见第七章中的字符数组与字符串),一、常量与符号常量 常量是指在程序运行中,其数值不能被改变的量。,2.2 常量与变量,120、-100、0; 十进制 0120、072; 八进制 0xFFFF、0x1e、0X28AF,0XED4; 十六进制 120L,200L; 长整型常量(字符L大小写均可) 3.14、-3.1、5.12E-6;实型(只能十进制表示) a、#、n、101;字符型 “changsha“、“+?ab“ ;字符串型 099、12f、0xg、48EA; 019.5 、1e-08; 实型常量 2.1E10.2、E-6、6.

7、4E+4.8、E9 ; 、ab;,1、直接常量:是在程序中直接引用的数据。,2、符号常量 用标识符来表示一个数据,但在程序中不能给它赋值。,定义形式: #define 标识符 常量数据 例如: #define PI 3.14159 在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。 如:2*2.3*PI 就等价于 2*2.3*3.14159。,习惯上,符号常量名用大写,变量用小写,以示区别,例 #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2

8、-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,运行结果: total=37.500000, ch1=d,变量是指以标识符为名字,其值可以改变的量。 变量代表计算机内存中的某一存储空间, 该存储空间中存放的数据就是变量的值。 在同一程序块中,变量不能被重复定义。 使用变量时必须“先定义,后使用”。,二、 变量,定义变量就是在内存中划出一块相应类型的存储空间存放该变量的值。定义形式如下: 类型标识符 变量名1 ,变量名2,变量名3.;,int a,b,c_2,students; float x,xy; char c1,c2;,在同一程序中变量名不允许被重

9、复定义。,int a,b=3,c_2=9,students; int d=e=f=3; float x,xy=3.76; char c1,c2=k; a=students=6,变量的赋值 在定义变量的同时给变量一个初始值, 但不能连续赋初值。 使用“”赋值,且常量与变量类型相同。,int a,b; float x; a=b=x=12.34,int a,b; float x; x=a=b=12.34 x=12 a=12 b=12,x=12.34 a=12 b=12,main( ) int x,y,z,w; /*定义x,y,z,w为整型变量*/ unsigned int k; /*定义k为无符号整

10、型变量*/ char c1,c2=b; x=10;y=-20;k=30;c1=a; z=x+k;w=y+k; c1=c1-32; c2=c2-32; printf(“x+k=%d,y+k=%dn”,z,w); printf(“%c %cn”,c1,c2); ,例2-1和例2-2,x+k=40,y+k=10 A B,2.3 运算符与表达式,运算符:就是表示某种运算功能的符号。 算术运算符、赋值运算符、逗号运算符、求字节运算符、 条件运算符、关系运算符、逻辑运算符 位运算符、 指针运算符、强制类型转换运算符、 分量运算符、下标运算符、其他运算符,表达式:是由操作数和运算符组成的序列。 如:1+2*

11、3-4 、 35-7 、a=b%2、39 等 在数学里当多个运算符一起组成一个表达式,我们规定了优先级(先乘除后加减)和结合规则(从左至右)。 同样在C语言中我们也规定了每个运算符的结合规则及运算符之间的优先级。,( ) (括号) +、-、-、sizeof、!(连加.连减.负号.求字节数.逻辑非) *、/、% (算术运算符) 高 +、- (算术运算符) (左右移位) 、=(关系运算符) =、!= (关系运算符) & (按位与) 运算级别 (按位异或) | (按位或) & (逻辑与) | (逻辑或) ?、: (条件运算) 低 =、+=、-=、*=、/=、%=、=、=、&=、 =、|= (赋值)

12、, (逗号),结合方向 红色 (自左至右) 蓝色加下划线(自右至左),一、算术运算符和算术表达式,1、算术运算符(双目运算符,有两个操作数) +(加)、-(减)、*(乘)、/(除)、%(取余) 两个整数相除,结果为整数,舍去小数部分; 参加运算的两个数中有一个为实数,则结果为double型,因为所有实数都按double型进行运算。 取余运算的操作数只能是整数,且结果的符号与前一操作数的符号相同; 5/2=2 -5/2=-2 5.0/2=2.5 5%3=2 -5%3=-2 5%(-3)=2 -5%(-3)=-2;,2、算术表达式 用算术运算符和括号将操作数连接起来的式子。 优先级:( ) *、/

13、、% +、- 结合规则:从左至右 表达式的值:数值型,float a=2.0;int b=6,c=3; 求解:a*b/c-1.5+a+fabs(-5) 2.0*6/3-1.5+97+54.0-1.5+97+5104.5,int a=1,b=2;求解:a/b+31/2+30+33 int a=10000,b=30000;求解:a+b出错(改为long),int a=10000,b=30000;求解:a+b=40000(不出错) 在VC+6.0中int占4个字节,通常情况下X位CPU中的int型占用的字节数为X/8。,3、自增与自减运算符 (+、-) +i,-i:使用之前使i的值增1(或减1);

14、i+,i-:使用之后使i的值增1(或减1); 当+、-不与其他运算符混合使用时, +i与i+都等价于i=i+1, -i与i-都等价于i=i-1。,i=3; j=i+; 等价于:j=i;i+; i=4,j=3,i=3; j=+i; 等价于:i+;j=i; i=4,j=4,结合性:自右至左 i = 2;j = -i+; “+”与“-”(负号)是同优先级,且都高于“=” 按结合规则,等价于:j=-(i+); 结果:i3,j-2。,a=3,b=(a+)+(a+)+(a+) b=9 a=6 a=3,b=(a+)+(a+) b=6 a=5 a=3,b=(+a)+(a+) b=8 a=5 a=3,b=(a+

15、)+(+a) b=8 a=5 a=3,b=(+a)+(+a) b=10 a=5 a=3,b=4,c=a+b c=7 b=4 a=4,二、赋值运算符和赋值表达式,1、赋值运算符 = (执行功能:把=右边的表达式的值,存入=左边的变量对应的存储空间,即给此变量赋值),2、赋值表达式 用赋值运算符将变量和表达式连接起来的式子 形式:= 结合性:自右至左; 表达式也可以是另一个赋值表达式 x=10+(y=5),i=(j=10)/(k=2),x=(y=12)/4, x=y=12/4,x=(y=12/4), (x=y)=12/4 (编译出错),3、复合赋值运算符 *=、/=、 %=、+=、-=,=,&=、=、= 复合运算符是一个运算符,但功能上,是两个运算符功能的组合。 优先级:与 = 是同一优先级。 结合性:自右至左; 表达式的值:被赋值变量的值。,a=12,计算表达式 a+=a-=a*12 a+=(a=a-a*12) a+=(a=12-12*12) a+=(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号