3 第三章 数据类型、运算符与表达式
C语言第3章数据类型、运算符与表达式ppt课件
数据类型、运算符与表达式
1
主要内容
一、C的数据类型 二、常量与变量 三、基本数据类型 四、运算符与表达式
2
一、C的数据类型
(一) 什么是数据类型? (二) C语言的数据类型有哪些?
3
(一) 什么是数据类型?
对数据的描述
对操作的描述
数据结构+算法=程序
C语言中以 “数据类型”形式存在
4
所谓数据类型是按被定义变量的性质,表示形 式,占据存储空间的多少,构造特点来划分的。
int NUM=20; sum=PRICE*NUM;
11
符号常量优点
1、含义清楚。 2、在需要改变一个常量时,能够做到“一
改全改”
12
(二)变量
概念
变量代表内存中具有特定属性的一 个存储单元,它用来存放数据,也 就是变量的值。
13
(1)变量名。每个变量都有一个名字 ──变量名,代表一个地址。 (2)变量值。在程序运行过程中,变 量值存储在内存中。在程序中,通过 变量名来引用变量的值。
#include <stdio.h>
void main() {
int student,age; int if=adrress=1; float score=90;
stadent=2; Age=20; printf("%d %d %d %f",if,student,age,score); }
本程序中有 几处错误?
(5)标识符的有效长度随系统而异,如果超 长,则超长部分被舍弃。VC++6.0中规 定最大长度为247个字符。
23
请选出下列正确的标识符 M.D.John , 12%gf ,1add ,_ce36 ,age& 5thclass, lotus-1-2-3 , cd*ef , float,
3 数据类型、运算符和表达式
三、整型数据
3.1.整型常量 整型常量即整常数按不同的进制区分, 整型常量即整常数按不同的进制区分 , 整型常数 有三种表示方法: 有三种表示方法:
十进制数: 以非0 220, 560, 十进制数: 以非0开始的数 如:220, -560, 45900 八进制数: 06; 0106, 八进制数: 以0开始的数 如:06; 0106, 十六进制数: 十六进制数: 以0X或0x开始的数 如:0X0D, 0XFF, 0x4e
一般情况下,符号常量名用大写、变量用小写。 一般情况下,符号常量名用大写、变量用小写。
3、符号常量的声明和使用 一般放在程序的前端, <…>在一块: 一般放在程序的前端,与#include < >在一块: #define 符号常量名 值 如:#define Zero 0 好处: 好处: 含义清楚 (#define Second 60) (#define (#define 一改全改 (#define PI 3.14)
3. 整型变量的溢出
main(){ i,j; int i,j; unsigned k,l,m; k,l,m; i=32767 32767; i=32767; j=i+1 j=i+1; l=65535 65535u l=65535u; m=l+2 m=l+2; printf("j=%d\n",j); printf("j=% n",j); printf("l=% n",l); printf("l=%u\n",l); printf("m=% n",m); printf("m=%u\n",m); }
3.2、整型变量 整型变量的分类:加上不同的修饰符 1 . 整型变量的分类 : 加上不同的修饰 符 , 整型变 量有以下几种类型; 量有以下几种类型; C 语言标准没有规定整型变量在计算机内存中所 占的字节数,它与具体的机器和操作系统有关: 占的字节数,它与具体的机器和操作系统有关:
3 数据类型.运算符与表达式
C语言程序设计
第6页
符号常量
一般来说,下列两种情况用符号常量比较方便。 1)当某一常数在程序中多处出现时,可事先定义一个符 号常量。 2)有时,程序中的常数是有意义的,但写一个具体数字,程 序的阅读者则很难明白该常数的意义,此时可定义一个符 号常量。 例如: # define PI 3.1415926 注意:1)表示常量的标识符一般用大写 2)不能给符号常量赋值 PI=6; 错误 思考题:使用符号常量的好处? 含义清晰;一改全改
C语言程序设计
第14页
3.4 实型数据 3.4.1 实型常量
注意:1)没有unsigned和signed 之分。 2)实型常量没有单、双精度数之分;但可以赋给 一个float型或double型变量。赋值时要注意有效 数字位数。 float a; a=12345.6789 (只能接受前7位) 3)C编译系统将浮点型常量作为双精度来处理
C语言程序设计
第11页
3.3.2 整型变量
有三种整型变量(int、short int、long int): 但也可以将变量的类型定义为无符号(unsigned int) 1)有符号基本整型:signed int signed int 2)无符号基本整型:unsigned int 3)有符号短整型: signed short int signed int 4)无符号短整型: unsigned short int unsigned short 5)有符号长整型: signed long int signed long long 6)无符号长整型: unsigned long int unsigned long
THE C PROGRAMMING LANGUAGE
第三章数据类型、运算符与表达式
设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是(D)。
A.12B.18C.16D.21下列数据中,为字符的是(D)。
A.‘AB’B."A"C.HowD.‘A'以下符号中,合法的用户标识符是(D)。
A. -pB. intC. 3abD. _xt_以下实型常量中,符合C语言语法的是(A)。
A. .5E-3B. 1.2E0.5C. E15D. 3.14.159E若有说明和语句:int a=5,b=6;b*=a+1;则b的值为(D)A. 5B. 6C. 31D. 36设C 语言中,int 类型数据占4个字节,则short 类型数据占(C)。
A.1个字节B.2个字节C.4个字节D.8个字节若x=3.5,a=2,y=2.5,b=3则表达式(float)(a+b)/2+(int)x%(int)y的值是()。
A.1.5B.2.5C.3.5D.2以下选项中不属于C语言的类型的是(D)。
A.signed short intB.unsigned long intC.unsigned intD.long short关于C语言数据类型的叙述,正确的是(C)。
A. 整型不是基本类型B. 数组不是构造类型C. 变量必须先定义后使用D. 不允许使用空类型若a=12,则表达式a-=a的值为(A)。
A. 0B.12C.1D. 24若x=3.5,a=2,y=2.5,b=3则表达式(int)(a+b)/2+(int)x%(int)y的值是(D)。
A. 1.5B. 2.5C. 3D. 3.5若a是数值类型,则逻辑表达式(a==1)&&(a!=1)的值是(C)。
A.1B. 2C. 0D. 不知道a的值,不能确定若char x=97,则变量x对应(A)字符。
A. ‘a’B. ‘A’C. ‘9’D. ‘7’设C语言中,int类型数据占2个字节,则float类型数据占(C)字节。
C语言第3章(谭浩强)
void main( ) { int a,b,c,d; unsigned 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 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8
④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9
3、变量要先定义后使用
可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。
C语言第3章数据类型
序 设 计
C
6
§3.1 C语言的基本元素和数据类型
字符型 char 程序=算法+数据结构 基本类型 整型 int 单精度 float 实型(浮点型) 算法处理的对象是数据 双精度 double 数据结构是数据的组织形式 数组型 array 数据类型是指数据的内在表现形式 数据类型 结构体型 (含位段)struct (代码,存储,运算)。 构造类型 共用体型 union 枚举型 enum 自定义型 typedef 指针类型 (pointer) 空类型 void
内容提要:
C语言的基本元素和数据类型 常量与变量
各种数据类型的常量和变量
变量赋初值 各种类型的数据间的混合运算 几种基本运算符及其表达式
3
程 序 设 计
C
§3.1 C语言的基本元素和数据类型
一、符号集(字符集) C语言经常使用的基本符号共有以下五种: (1)大写字母:A~Z (2)小写字母:a~z (3)阿拉伯数字:0~9 (4)下划线:_ (5)标点符号和运算符
程 序 设 计
C
19
§3.4 实型数据
三、实型数据的舍入误差
虽然实型数据的表示形式有两种但在内存中均是以指 数形式存放 数 阶 若数据超过有效位,则被 小数 指数 符 符 舍去,故可能产生误差。 例3-4 #include <stdio.h> Void main( ) { float a, b; a=123456.789e5; b=a+20; printf(“a=%f, b=%f\n”, a,b); } a=12345678848.000000, b=12345678848.000000
C语言程序设计
C Programming Language
第3章基本数据类型与表达式
不要将字符常量与字符串常量混淆。’a‘是字符常量, 而“a‖是字符串常量,二者是不相同的。例: char c; c=‗a‘; 是正确的 c=―a‖; 不正确 因为不能把一个字符串赋给一个字符变量。
字符常量与字符串的区别: (1)字符常量在内存中占一个字节,而字符串不 是; (2)C规定:在每一个字符串的结尾加一个“字 符串结束标志”,以便系统据此判断字符串是否 结束。C语言以‘\0‟作为字符串结束标志。即是 一个“空操作字符”。 注意:在写字符串时不必加‘\0‟,系统会自动加 上的。因此,字符串“a”,它在内存中实际上是 包含2个字符:‘a‟和‘\0‟。 在C语言中可以用字符型数组来存放字符串。
表2.1 Turbo C所支持的整型数据类型
关键字 int unsigned int 所占位数 16 16 最小取值范围 -32768~32767 0~65535
unsigned short int
signed short int
16
16
0~65535
同 int
long int
unsigned long int
例:向字符变量赋以整数。
main()
{ char c1, c2;
c1=97;
/*c1,c2为字符变量*/
c2=98;
printf(―%c printf(―%d } 输出结果: a 97 b 98 %c\n‖ , c1, c2); /* %c是字符输出的格式*/ %d\n‖, c1, c2);
例:大小写字母的转换
程序运行结果为: a+u=22, b+u=-14
3.4 实型数据
3.4.1 实型常量的表示方法
数据类型及运算
内存中存储形式
负数的补码 =反码+1 =原码取反+1
内存中存储形式 10
A B
整型数据在内存中的存储形式
----以有符号 2 字节整型为例 32767(215-1)的 16位编码 原码:01111111 11111111 反码:01111111 11111111 补码:01111111 11111111 内存中存储形式 -32767(1-215)的 16位编码 原码:11111111 11111111 反码:10000000 00000000 补码:10000000 00000001 内存中存储形式
A B
空类型void 3
3.2~3.3(1) 常量与简单变量–以数值型为例
• 常量: 在程序运行中,其值不变的量,如: 23.7, - 67 等。 • 变量: 在程序运行过程中,其值可以改变的量, 在内存中占据一定的存储单元。
变量a 150 50
A B
4
一、两类常量
常数常量和符号常量 常数常量 如-10, 3.14 符号常量: 用标识符表示的常量。符号常量用 预处理(宏定义)命令定义在函数之外。 定义形式: A B
C语言第03章--数据类型和表达式
char int
ch = 'a'; i = 1;
17
变量的属性
例:
int sum=10; 类型
内存存放说明: 内存存放说明: 存放说明 变量名 1001 sum 10 变量值
存储单元的地址
二、 变量
命名规则 在C中变量名 函数名 文件名 数组名 等均称标识符 变量名, 函数名, 文件名, 数组名, 变量名 标识符 (identifier), 可由字母 数字 下划线 字母,数字 下划线组成,且第一个必 字母 数字和下划线 须为字母或下划线 字母或 字母 下划线,前8或32个有效。 注意: 字母大小写敏感; 注意 字母大小写敏感 不可用关键字; 不可用关键字 不可出现空格; 不可出现空格 见名知意; 见名知意 如: a1与A1为不同的变量名 如: int, for, if 等 如: stu 1, a 1等 如: sum, sort 等
e前必须有数 前必须有数 字,e后必须 后必须 有整数
合法:0.123、.123、123.0、123.、0.0 合法: 、 、 、 、 错误: 错误 - 2.0e2.5 e8
(3)字符常量 字符常量 —— 用单引号括起来的一个字符或转义字符 括起来的一个字符或转义字符 一个字符或转义字符. 例: ‘A’, ‘o’ , ‘1’, ‘#’, ‘a’ 等
float
必转
char, short long unsigned int 低
double 高
自动类型转换
34
例:
若:i 为 int , f为float ,d 为 double e 为long
字节数
第三章 数据类型运算符与表达式
三、变量
3、变量值的存储 变量被定义以后,系统在运行时会为该变量分配一个相 应大小的存储空间,称为存储单元。 给变量赋值后,该变量对应的存储单元中会存放该值, 这个值称为变量的值。 那么变量的值在变量的存储单元中是如何表示的呢? (1)整数是以补码的形式存放的。 (正数的补码是其本身,负数的补码为原码按位取反加1) 如:int a=2, b; b= -2; a 00000000 00000010 b 11111111 11111110
(一)算术运算符和算术表达式
表达式的值: 表达式运算得到的最终结果为表达式的值。 也就是整个式子代表的值 如a=5,b=2; a+b 7
(二)赋值运算符和赋值表达式
赋值运算符:= 格式:变量=表达式 如:int a,b; 下面都是正确的赋值表达式 a=5; b=3; a=2+3; a=a+2; b=a*a; 赋值运算为“从右向左”结合的。 如x=y=z=3 它等价于:x=(y=(z=3))
第三章 数据类型运算符与表达式
信息管理系
3.0、C语言中标识符的概念
• 在程序中,由程序设计者使用的名字成为标 识符。标识符用以标志区分不同的东西。它 可以用作函数的名字、变量、常量的名字, 以及文件的名字等等。
一、C语言中的标识符分类
• 用户标识符 • 关键字(语句标识及类型标识)(P375附录II) 例如:real,main,char,int,float,double, long,if,for,switch,default,break等。 • 预定义标识符(函数名字等) 例如:define,include,printf,scanf,sin等。
2的原码表示:00000000 00000010 -2的补码表示:11111111 11111101+1=11111111 11111110
第三章 数据类型、运算符及表达式§31 字符及标识符
2关系运算符
比较两个操作数的大小的运算符,称为关系运算符。 关系运算的表达式,称为关系表达式。 例如, 3+5 > 7-4 关系表达式也有它的值。 如: 8 > 3, 该关系成立,因此关系表达式的值为真, 反之, 其值为假。 在C语言中,用数值1表示真,用数0表示假。 如,7 == 2,关系表达式为假,其值为0。 关系运算符的种类和表达式如下:
•
*C 语言提供的长整数的表示方法可以用来扩大整数的取值 范围. – 例如, 41l, 037l, 0x1fL 字母后面的l 或 L ,表示该数是长常数., 上面三个数,分别是十进制、八进制、十六进制长整数。 一个在整数中放不下的普通整数也被作为长整数,
因此, 把其后紧跟有 l 或 L 的整数叫显式长整数. • 在16位字长的机器上,长整数的位数是 32 位 ( 增长一倍 )。 故长十进制整数取值范围为 -2147483648 到 2147483647。 (2)整型变量: • 基本整型 int 如: int x; • 长整型 long 如: long int y; 或 long y ; • 无符号 unsugend 如: unsigend int z; 或 unsigend z。
• 关键字
具有固定意义的标识符,用户不能用作为自己的标识符, 它们共有32个,除符号常量外都用小写字母表示,就其用途 分五类。 (1) 数据类型 int char float double short ... (2) 存储类型 extern static register auto typedef (3) 控制语句 if else for while do .... (4) 运算符 sizeof (5) 符号常量 EOF BOF .... *它们的含义后面将会络续提到。 * 用户定义的标识符,不能和关键字同名。
C语言教程第3章 数据类型、运算符与表达式
注意以下几点:
(4) 一个整常量后面加一个字母u,认为 是unsigned int型,如12345u,在内存 中按unsigned int规定的方式存放(存储 单元中最高位不作为符号位,而用来存 储数据,见图2.4(b)。如果写成-12345u, 则先将-12345转换成其补码53191,然 后按无符号数存储。
int a; unsigned int b;
一个整数(以13为例)在存储单元中 的存储情况
3. 整型变量的定义
int a,b; (指定变量a、b为整型) unsigned short c,d; (指定变量c、d为无符号短整型) long e,f; (指定变量e、f为长整型)
例3.2整型变量的定义与使用。
字符型变量用来存放字符常量,请注 意只能放一个字符,不要以为在一个字符 变量中可以放一个字符串(包括若干字符)。 字符变量的定义形式如下: char c1,c2;
c1='a';c2='b';
3.5.3 字符数据在内存中的存储 形式及其使用方法
字符的相应的ASCII代码放到存储单元中
例3.6向字符变量赋予整数。
单精度 ( float 型 占4B) 双精度 ( double 型 占8B )
C语言第3章数据类型、运算符、表达式
例如
➢字符常量‘a’占一个字节 ➢字符串常量"a" 占2个字节
‘a’ → “a” →
0110 0001 ……
0110 0001 0000 0000
(97)10
(97)10 (0)10
7.变量赋初值
变量赋初值
C语言允许定义变量时赋予初值。
➢int i = 6;
也可对某个变量赋初值:
➢int a, b, c = 6;
如: 0x16, 0x28
4.整型数据
整型变量
分类:
➢基本型 用“ int ”定义; ➢短整型 用“ short int ”或 “ short ”定义; ➢长整型 用“ long ”或 “ long int ”定义; ➢无符号型 用“ unsigned ”定义,不存放符号;
整型变量定义方式
➢基本整型:int a, b, c; ➢短整型 : short int 或 short a, b, c; ➢长整型: long int 或 long a, b, c; ➢无符号型:unsigned a, b; unsigned short a, b
10+‘a’+1.5–8765.1234 ‘b’
8.各种数值型数据间的混合运算
转换方法(自动转换)
double float
高
long
unsigned
低 int char, short
图中“ ” 表示必定转换。如'a' +' b',先转换为int,结果为 int。
既使是同一种类型也按" "转换。
对于“++”和“--”的使用要避免二义性
10.赋值运算符和赋值表达式
C3-数据类型
3.5.3
字符型数据的存储方式及使用
字符数据在内存中存储的是字符的ASCII码 ─ 一 个无符号整数,其形式与整数的存储形式一样, 所以C语言允许字符型数据与整型数据之间通用。 (1)一个字符型数据,既可以字符形式输出,也 可以整数形式输出。(见50页例3.6) (2)允许对字符数据进行算术运算,此时就是对 它们的ASCII码值进行算术运算。 (见51页例3.7)
3. 长双精度: long double
3.4.3
实型常量的类型
–默认double型 –在实型常量后加字母f或F,认为它是float型
3.5
字符型数据
如 ‘a’ ‘A’ ‘?’ ‘\n’ ‘\101’
定义:用单引号括起来的单个普通字符或转义字符. 如 ‘A’——65 ‘a’——97 字符常量的值:该字符的ASCII码值 ‘0’——48 ‘\n’——10 转义字符:反斜线后面跟一个字符或一个代码值表示
2. 表达式和算术表达式
表达式的概念:用运算符和括号将运算对象(常量、变量和 函数等)连接起来的、符合C语言语法规则的式子,称为表 达式。
算术表达式:表达式中的运算符都是算术运算符。例如,3
+ 6 * 9、
(x + y) / 2 等,则称为算术表达式。
运算符的优先级与结合性:
(1)C语言规定了运算符的优先级和结合性。 所谓结合性是指,当一个操作数两侧的运算符具有相同的优先 级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结 合。 自左至右的结合方向,称为左结合性。反之,称为右结合性。 结合性是C语言的独有概念。除 单目 运算符、 赋值运算符和 条 件运算符是右结合性外,其它运算符都是左结合性。
C H I N A
ch3
东北师范大学计算机学院
2010年秋季学期 2010年秋季学期
Professional Words
Data type Constant Variable Expression Declaration Initialization assignment Identifier Reserved words
9
东北师范大学计算机学院
2010年秋季学期 2010年秋季学期
2、变量(Variable) 、变量
程序运行中其值可以改变的量称为变量。与一个 程序运行中其值可以改变的量称为变量。 变量相关的内容:变量名(name) (name), 变量相关的内容:变量名(name), 变量的值 (Value),变量所占的存贮单元( (Value),变量所占的存贮单元(地址 Address) Address)。给变量的起名要符合标识符 (Identifier)的定义 的定义。 语言规定标识符中可以 (Identifier)的定义。C语言规定标识符中可以 由字母(letter)、数字(digit)和下划线 由字母(letter)、数字(digit) underscore)组成, (underscore)组成,且第一个字符必须是字母或 下划线。 下划线。 例如, 例如,a2,_abc,_ABC,a_1,123,8a
12
东北师范大学计算机学院
2010年秋季学期 2010年秋季学期
三、整型数据(integer) 整型数据
1. 整型数据在内存中的存放 . 用二进制进行存贮, 用二进制进行存贮,且用补码表示 复习进制、原码,反码, 复习进制、原码,反码,补码方面的知识 2. 整型常量的表示方法 . 十进制数(Decimal):直接写 十进制数 : 八进制数(Octal):以数字 开头 八进制数 :以数字0开头 022、-037 、 010和10大小不一样 和 大小不一样 十六进制数(Hexadecimal):以0x开头 十六进制数 : 开头 0x12、-0x1F, -0x1f 、
C语言第03章
<尾数>E〔e〕<整型指数>。例如3.0E+5等。
日常表示法 3.14159*100 0.314159*101 0.0314159*102 31.4159*10-1
C语言表示法 3.14159e0 0.314159e+1 0.0314159e+2 31.4159e-1
注意: (1)C语言对英文字母的大小敏感,即同一字母的大 小写,被认为是两个不同的字符。
习惯上,变量名和函数名中的英文字母用小写,常量用 大写字母增加可读性。
练习题: 1.下面为合法的标识符有: _12s 12s s_12 s@12 define 2.经过下面的操作,sum的值为_____ sum=7, SUM=10 , SUM=7+12, Sum=SUM+23
(2)标识符命名的良好习惯──见名知意: 所谓“见名知意〞是指,通过变量名就知道变量值的含 义。例如,name/xm〔姓名〕、sex/xb〔性别〕、age/nl 〔年龄〕。
4.变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义、后使 用;且称在定义变量的同时进展赋初值的操作为变量初始化。 〔1〕变量定义的一般格式
随意值。 0 1 1 0 0 0 0 1 1 0 0 0 00 0 0 i=10; 将10转换为二进制的补码形式存放
0 0 0 0 0 0 0 0 0 0 0 0 1 0 10
思考一下 i=-10,计算机内是如何存储的;
2. 分类:根据占用内存字节数的不同,整型变量又 分为4类:
〔1〕根本整型〔类型关键字为int〕。2字节 〔2〕短整型〔类型关键字为short [int]〕。2字节 〔3〕长整型〔类型关键字为long [int]〕。4字节 〔4〕无符号整型。(最高位不是符号位,而是数值)
第3章-基本数据类型、运算符和表达式
问题:
0123 = (
)10
0x123 = (
)10
0Xff = (
)10
形式
表示方式
举例
十进制整数 由数字0~9和正负号表示 123,-456,0
八进制整数
由数字0开头,后跟数字0~7 表示
十六进制整数 由0x开头,后跟
0~9,a~f,A~F表示
0123,011 0x123,0Xff
整型常量的类型
整
(signed) long
型
unsigned int
无 unsigned short
unsigned long
实 有 float 型 有 double
字有
符 型
无
char unsigned char
说明:数据类型 所占字节数随机 器硬件不同而不 同,上表以IBM 所占位P数C机为例 数的表示范围
16
#define PRICE 30
main()
{
int num,total; num=10;
运行结果:total=300
total=num*PRICE;
printf("total=%d",total);
}
变量
其值可以改变的量称为变量 变量也可以为任意数据类型 变量定义的一般格式
数据类型 变量1[,变量2,…,变量n];
组讨成论::判断下列标识符号合法性
su•m只能S由um字母M、.D数.J字oh、n 下划d线ay组成D,ate且第3一day个s 字母必 须是字母或下划线
stu•d大en小t_n写am敏e感#33 lotus_1_2_3 char a>b ab•ov不e 能使$1用23关_键toD字ay
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整型变量的溢出
void main() { int a,b; a=32767; b=a+1; printf(―%d, %d‖,a,b); }
a b
运行结果: 32767,-32768
32767 -32768
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
欲保存一个字符串,必须使用字符数组。
„b‟与‘B‟是否相同?
‘b‟与‚b”是否相同?
b的值为98,B为66; „b‟是字符常量,只占一个字节;
‚b”是字符串常量,占两个字节。
符号常量
符号常量是用一个标识符来代表的常量.
#define PRICE 30 /*用 宏命令(define)定义 PRICE ,代表常量 30 */ void main() { 符号常量 int num,total; num=10; total=num * PRICE; printf(“total=%d”,total); } 使用 符号常量 的好处: 1. 易读性(含义清楚); 2. 可维护性(一改全改); 3. 一致性。 ‚符号常量‛ 的特点: 必先声明,方可使用; (关于宏将在第九章讲解)
‚数据类型‛的意义:
1. 定义了数据占用的内存空间大小
2. 定义了数据在内存中的存储格式
3. 决定了数据的运算规则(自身的行为) 4. 为编译器提供了检查依据
‚数据类型‛的作用:
‚数据类型‛描述了数据的性质,规定了一组运算(操作)。 不但指导者编译器的行为,使之不致‖认贼作父‖、误入 歧途;而且约束着程序员的行为,使之不能‖指鹿为马‖、 为所欲为。 是避免程序错误的初级(基本)手段,不是全部手段;
转义符
除了以上所述的字符常量外,C还提供一种特殊的字符常量, 就是以一个 ‚\‛开头的字符序列,用于将反斜杠(\)后面的字 符转换成为另外的意义,‚另外的意义‛是指某控制动作。
转义符分三种:
1、将‚字符‛转换成为‚控制符‛ \n、\t、\v、\b、\r、\f、\a 等
详见P48页 表3.3 转义字符及其含义
变量的存储模式
int a = 5 ; /* 申请空间并初始化 */ Memory
Address Name (a)
Value(5)
Type (int)
一个变量必然包含以下概念: 1. 名字(变量名) 2. 类型(变量占用空间) 3. 值(变量的内容) 4. 地址(变量在内存中所处的位臵)
字节
标识符
2、将‚控制符‛转换为‚字符‛(将被挪用的字符还 其本来面目 ) \\、\’、\‛、\? 等
3、将不同进制数表示为‚字符‛ \ddd 三位八进制表示的字符 \xhh 两位十六进制表示的字符 用法:
转义符可以单独使用,也可以嵌入字符串常量中 (自 身就是字符常量) 。
转义符的使用:
例: 指出下列字符串所含字符数:
整型数据,在存储空间最左侧的位是用来表示符号的: • 0表示数值为正; • 1表示数值为负;
整型变量的定义
void main() { int a,b,c,d; unsigned 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 变量一般定义在一个函数开头的声明部分; 不同类型的整型数据可以进行算术运算;
–1的补码
补码一定符合:-a+a=0的规则。
整型变量的分类:
基本整型 int (-32768 ~ 32767)
• 短整型 short int 或 short
(-32768 ~ 32767)
• 长整型 long int 或 long
( - 2147483648 ~ + 2147483647)
整型数的存储模式:
ab
c
gde j i k
对下列字符串将显示什么?
字符串常量
字符与字符串的区别: 1、类型不同 2、占用空间不同 3、管理及使用方式不同
字符串常量的定义:一对双引号括起来的字符序列。 如:‚How do you do.” ‚ CHINA” ‚a” ‚$123.45 字符串常量其实就是一个匿名的字符数组。 char c; c=„a‟; /* 正确 */ /*不能把一个字符串赋值给一个字符变量 */ c= ‚a”; /* 错误 */ c= ‚CHINA” ;/* 错误 */
补码的概念
为何使用补码 ?
因为计算机非常‚笨‛,它只会做加法。又因 为减就是加上负数。人们把负数写成关于一个 模的补码,这样减运算就变成了加运算,加减 运算就统一起来。 ‚模‛是指一个计量系统的计量范围,即产生 ‚溢出‛的量。 其实补就是‚另一半‛之义。
若现在是北京时间17点整,而分针却指向5点。
数值的第一位
有符号整型数
有符号基本整型 无符号基本整型 有符号短整型 无符号短整型 有符号长整型 无符号长整型 [signed] int unsigned int [signed] short [int] unsigned short [int] [signed] long [int] unsigned long [int] 双字节 双字节 双字节 双字节 四字节 四字节
Memory
int i = 10; /* 申请空间并初始化 */
一个整型变量在内存中占2个字节。
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
字节
实际应用中,为了充分利用内存空间,可将变量定义为 ‚无符号‛整型——unsigned. int a; ( a 的取值范围:-32768~32767) unsigned int b; ( b 的取值范围:0~65535)
‚类型‛的分类:
整型 基本类型 字符型 单精度型 实型(浮点型) 双精度型 枚举型 指针类型 数组类型 构造类型 结构体类型 共用体类型 空类型(void)
数据类型 数据类型
常量
在程序运行过程中,其值不能被改变的量称为常量。 ‚不能被改变‛是用只读来保证的。 常量分为四种类型: •整形常量 12、0、-3 •实型常量 4.6、-1.23 •字符型常量 ‘a‘、‘D‘、‘3‘、‘?’ •字符串常量 ‚china‖、‖String‛ 常量一般从其字面形式上即可判别—— 数据。 特点: 1)直接使用,不必声明; 2)不占内存空间(串除外); 3)无地址。 这种常量也被称为常数(‚字面常量‛ 或‚直接常
字符串常量
‚a” 和‘a‟究竟有什么区别? 每个字符串都有个结束标志 ‚\0‛。而字符没有.
“CHINA”:
C H I N A \0
C 67 H I N A \0 0
Memory
72 73 78 65
0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 12 0 1
2
3 4 5 6 7 5 4
2
3
5点钟可视为12点逆 转7个点.减7,等于 5.
5点钟也可视为0点正转5 个点.加5,等于 5.
这个12就是模(溢出量)。 即 0+5 = 12 +(-7) (0点就是12点) , 于是 :-7是关于5的‚补数‛。
计算机对于数据是以补码(complement)形式 存放的. 正数的补码与其原码相同; 负数的补码是该数绝对值的二进制形式按位 取反再加1。 原码 : 00000000 00000001 求反 : 11111111 11111110 加 1 : 11111111 11111111 是+1 变成负数 成为-32768
‚a b c d e \f g h I j k \x12 \012 x \t ”
1 2 3 4 5 6 7 8 910 11 12 13 14 15 16
还有个\0
main() { printf(“ ab c\t de\rf\tg\n”);
printf(“h\ti\b\bj k”);}
运行结果:f
h
“数据类型”是什么?
我喝着计算机操作着咖啡‛。人一看就知是错的。因 为计算机不能喝,咖啡也不能操作。这句话错就错 在名词与动词的搭配上。 怎样使计算机也像人一样聪明,一下就看出程序中的 错误? 在程序中,变量是名词,运算是动词。 使计算机学会判断变量与运算搭配的是否正确,就得 预先告诉计算机,哪些变量是什么‚词性‛,可以 搭配哪些动词(即可以进行哪些运算)。 这‚预先告诉‛就是声明。变量的‚词性‛就是类型。
标识符是程序员为程序中的各种成份所起的名称,这些成份有变 量名、符号常量名、函数名、数组名、类型名等。 C语言中规定:标识符只能由字母、数字和下划线三种字符组成, 而且必须以字母和下划线开头。 正确: sum,_total,Class,Student_name,lotus_1_2_3,BASIC,li_liang 错误: M.D.John, ¥123 , #33 , 3D64 , a>b 使用了非法字符 数字打头 运算符 C语言对大小写敏感: 大写字母和小写字母被认为是两个不同的字符。 C语言要求对所有用到的变量进行强制定义:先定义后使用 保证程序中变量使用的正确; 在编译时就能为其分配相应的存储单元; 检查对该变量进行的运算是否合法;
实型常量的表示方法
实数(real number)又称为浮点数(floating-point number) 只有两种表示形式 : (只能采用十进制数) 1、小数形式: 它由数字和小数点组成(必须要有小数点) .123、123.、123.0、0.0都是十进制小数形式。 2、指数形式: 如:123e3或123E3都代表123×10的3次方 字母e或E之前必须有数字,且e或E0.123456E3 0.123456E3称为‚规范化指数形式‛,