C语言 第三章 数据类型、运算符与表达式C
c语言的数据类型、运算符和表达式

数据类型、运算符和表达式一、C 语言的基本数据类型数据是程序处理的对象。
C 中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。
数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。
C 的数据类型分为基本数据类型和构造类型。
基本数据类型是系统定义的,用户可以直接使用。
构造类型由用户自行定义。
C 的数据类型如图所示。
C 标准没有规定各类数据所占用内存位数。
所以不同c 编译系统的各类数据所占用内存位数是不一样的。
上机使用时,应注意使用的c 编译系统的具体规定。
Turbo C 基本类型 所占位数 数的范围 [signed] char 8 -128~127 unsigned char 8 0~255 [signed]int 16 -32768~32767 short [int] 16 -32768~32767long [int] 32 -2147483648~2147483647 unsigned [int] 16 0~65535 unsigned short [int] 16 0~65535 unsigned long [int]320~4294967295C++数据类型基本类型字符型(char) 空类型(void)整型短整型(short int) 无符号整型(unsigned int)长整型(long int)基本整型(int) 实型(浮点型) 双精度型(double)单精度型(float) 指针构造类型枚举(enum) 联合(union)结构体(struct)数组float 32 约6位有效数字double 64 约12位有效数字在Visual C++中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量常量:整型常量、实型常量、字符常量、字符串常量、符号常量1.整型常量C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。
C语言程序设计教案第3讲 数据类型、运算符与表达式

<
>
2,实型变量的分类
说明: C并没有具体规定每种类型的长度 并没有具体规定每种类型的长度, 说明:ANSI C并没有具体规定每种类型的长度,精度和数值 范围.下面是常用的C 范围.下面是常用的C编译系统的情况 类 型 字节数 有效数字 最小取值范围 float 4 6~7 -3.4*10-38~ 3.4*1038 double 8 15~16 -1.7*10-308~ 1.7*10308 long double 16 18~19 -1.2*10-4932~1.2*104932
8
取反
<
>
2.
整型变量分类
基本类型: 基本类型:int 根据数值的范围分为: , 根据数值的范围分为:int,short,long , 根据有无符号(singed/unsigned)及范围可分: 及范围可分: 根据有无符号 及范围可分
类 型 举例: 举例: [signed] int unsigned [int] [signed] short [int] unsigned short [int] [signed] long [int] unsinged long [int]
C 数 据 类 型
构造类型 指针类型 空类型 void
定义类型 typedef
<
>
2
2.2 常量与变量
一,标识符
定义:用来标识变量名,符号常量名, 定义:用来标识变量名,符号常量名,函数 数组名,类型名, 名,数组名,类型名,文件名的有效字符序 列称为标识符.(即一个名字) .(即一个名字 列称为标识符.(即一个名字) 使用规则
32767,32767,-32768,8
<
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,
C语言课件第三章

三、 自增、自减运算符 ++ --
++、- -运算符的作用是使变量的值加1或减1
1)该运算符为单目运算符,其运算对象只能是 变量,不能为常量或者表达式。 例如: i++ 、x- - 都是正确的 5++ 、(x+y)++ 都是错误的
2)该运算符作前缀、后缀都可以 例如 i++、++i、i- - 、- -i 都是正确的
3)对变量而言 i++ 或者++i都相当于i=i+1 i- -或者- -i都相当于i=i-1
例如: main( ) { int i=3 , j=3; +i+++i; j---j;; printf (“%d, %d\n”, i, j ); }
运行结果:4,2
4)但如果作为表达式,前缀和后缀则不同: 后缀:先取值再运算(i++,先取i值,i再自加) 前缀:先运算再取值(++i,i先自加,再取i值)
2)强制类型转换运算符优先级高于算术运算符
float x=3.6; int y; y=(int)x%3+2;
x = ?3.6 y=?2
计算下列表达式的值 设 x=2.5, a=7,y=4.7
x+a%3 * (int)(7x7+.2y ) % 2 / 4
设 a=2,b=3,x=3.5,y=2.5
(float5).(0a+b )/2+(int3)(x)%(int2)(y)
例如: main() { int i=3; printf(“%d\n”+, +i+i+ ); printf(“%d”, i ); }
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
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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
j
-10
11111111 11110110
2012年 10日星期二 2012年4月10日星期二
整型数据
三、整型变量的种类
10000000 00000000 01111111 11111111 基本类型: 基本类型:int [signed] int 的最大值 [signed] int 的最小值 根据数值的范围分为: , 根据数值的范围分为:int,short,long , 32767 (215-1) -32768(-215 ) 根据有无符号(singed/unsigned)及范围可分: 及范围可分: 根据有无符号 及范围可分 00000000 00000000 11111111 11111111 类 型 比特数 取值范围 [signed] int 的最小值 16 -215 ~ 的最大值 (215-1) unsigned [int]的最大值 unsigned [int]的最小值 unsigned 0 [int] 16 0 (216 16-1) 65535 ~ (2-1) [signed] short [int] 16 -215 ~ (215-1) unsigned short [int] 16 0 ~ (216-1) [signed] long [int] 32 -231 ~ (231-1) unsinged long [int] 32 0 ~ (232-1)
2012年 10日星期二 2012年4月10日星期二
整型数据
二、整型变量在内存中的存储 整型变量在内存中是以二进制补码的形式存放的 整型变量在内存中是以二进制补码 补码的形式存放的
int i=10;
i
10
00000000 00001010
取反
11111111 11110101
加1
int j=-10;
2012年 10日星期二 2012年g c:\ex3-2.c 四、整型变量的定义 Error .. 5: Expression syntax in function main Error .. 6: Undefined symbol c 变量定义放在函数开头的声明部分或者函数中某一分 函数开头的声明部分或者 in function main 变量定义放在函数开头的声明部分或者函数中某一分 Error .. 7: Undefined symbol d in function main … 程序开头的声明部分。 程序开头的声明部分。
2012年 10日星期二 2012年4月10日星期二
整型数据
一、整型常量的表示 十进制 如:123,-123,0 , ,
开头) 八进制 (以 0 开头) 表示十进制数83 如:0123 表示十进制数 十六进制( 开头) 十六进制(以 0x 开头) 表示十进制数291 如:0x123表示十进制数 表示十进制数
2012年 10日星期二 2012年4月10日星期二
常量和变量
二、关键字 C语言中的一共有 个关键字: 语言中的一共有32个关键字 语言中的一共有 个关键字:
关键字,也叫做保留字,是指在 语言中具有特定的含 关键字,也叫做保留字,是指在C语言中具有特定的含 保留字 义的字符,它们由系统定义,不能做为他用。 义的字符,它们由系统定义,不能做为他用。
短整型 short 整型 int 长整型 long 单精度型 float 双精度型 double
构造类型 指针类型 空类型 void
定义类型 typedef
2012年 10日星期二 2012年4月10日星期二
常量和变量
一、基本字符集 字符,是组成语言的最基本元素,允许出现在 语言源 字符,是组成语言的最基本元素,允许出现在C语言源 程序的所有字符的集合,称为字符集。 程序的所有字符的集合,称为字符集。 字母:a~z,A~Z 字母: , 数字: 数字:0~9 特殊字符:控制字符、分隔符、 特殊字符:控制字符、分隔符、运算符
第三章 数据类型、 数据类型、运算符与表达式
2012年 10日星期二 2012年4月10日星期二
数据类型、 第三章 数据类型、运算符和表达式
主要内容
C语言的常量与变量 语言的常量与变量 C语言的基本数据类型 语言的基本数据类型 各数据类型间的混合运算 运算符和表达式
C语言的数据类型 语言的数据类型
2012年 10日星期二 2012年4月10日星期二
常量和变量
标识符的注意事项
C语言区分大小写,大小写不同的标识符是不同的 语言区分大小写, 语言区分大小写 例如: 例如:Student和student是两个不同的标识符 和 是两个不同的标识符 标识符的长度有限制,要注意开发环境的限定 标识符的长度有限制, 长度有限制 Turbo C 允许的标识符的最大长度是 允许的标识符的最大长度是32 标识符的命名用有意义的单词组合 标识符的命名用有意义的单词组合 表示学号, 如:Stu_Num表示学号, 表示学号 不要一味地用a, 不要一味地用 b, c等简单标识符名 等简单标识符名
我们上节课讲到: 我们上节课讲到: 著名的计算机科学家N. 提出: 著名的计算机科学家 Wirth提出: 提出
2012年 10日星期二 2012年4月10日星期二
数据结构(描述数据) 算法(描述操作) 程序 = 数据结构(描述数据) + 算法(描述操作) 一个良好的程序,应当综合考虑算法和数据结构 一个良好的程序, 算法处理的对象是数据, 算法处理的对象是数据,而数据是以某种特定的形式 存在的 数据结构是指数据的组织形式
按数据类型
按字面形式
2012年 10日星期二 2012年4月10日星期二
常量和变量
使用符号常量的优点: 使用符号常量的优点:
/* Constant example*/ #define PRICE 25 30 用指定的字符串PRICE来代替“25” 来代替“ ” 用指定的字符串 来代替 含义清晰(定义时要注意采用合适的常量名) 含义清晰(定义时要注意采用合适的常量名) main() 一改全改 在预编译处理时 { 会将程序中所有“ 会将程序中所有“PRICE”用“25”代替 用 ” int num, total;
内存
XXXXXXXX 1 0 sum XXXXXXXX XXXXXXXX
2012年 10日星期二 2012年4月10日星期二
常量和变量
四、变量
类型说明符 变量列表 int 后使用( C语言要求对所有变量:先定义,number 强制定义) 语言要求对所有变量:先定义,后使用(强制定义) 语言要求对所有变量
有效范围是从定义处到源文件结束
num = 10; 宏定义不是C语句 语句, 宏定义不是 语句,不需要分号 total = num * PRICE PRICE; printf(“price=%d, total=%d”, PRICE total); PRICE, } 运行结果:price=25, total=250 运行结果
auto enum if short switch volatile break extern int signed typedef while case do float long sizeof char double for register static const else goto return struct void
保证程序中的变量名使用正确 编译时分配相应的存储单元 如:程序在声明部分声明变量student: 程序在声明部分声明变量 : 编译时可以检查该变量所进行的运算是否合法 int student; 在程序的声明部分做了如下定义: 如:在程序的声明部分做了如下定义: 在执行部分错写成studant: 在执行部分错写成 : int a; float b; studant = 30; 在程序的执行部分有下面运算: 在程序的执行部分有下面运算: 在编译的时候会检查出studant未定义,不做为变量名 未定义, 在编译的时候会检查出 编译时会给出相关的出错信息 未定义 a%b
2012年 10日星期二 2012年4月10日星期二
常量和变量
使用符号常量的优点: 使用符号常量的优点:
/* Constant example*/ #define PRICE 25 宏定义(参见第十一章) 宏定义(参见第十一章) 含义清晰(定义时要注意采用合适的常量名) 含义清晰(定义时要注意采用合适的常量名) main() 常量名一般用大写字母 一改全改 { int num, total; #define命令出现在函数外 命令出现在函数外
2012年 10日星期二 2012年4月10日星期二
常量和变量
四、变量 变量:在程序的运行过程中, 变量:在程序的运行过程中,其值可以被改变的量 变量必须用有效的标识符作为名字 变量名实际上是存放变量值的存储单元地址的抽象 变量名实际上是存放变量值的存储单元地址的抽象 实际上是存放变量值
int sum; sum=0; sum=sum+1;
2012年 10日星期二 2012年4月10日星期二
常量和变量
三、常量
/* Constant example*/ #define PRICE 30 符号常量定义 常量:在程序的运行过程中, 常量:在程序的运行过程中,其值不能被改变 main() { 常量的分类: 常量的分类: int num, total; 0、-2、123 符号常量使用 num = 10; 0.2、4.8、1.3e20 total = num * PRICE PRICE; 'A' 、'g'、'+'、'?' printf("total=%d", total) 直接常量(字面常量) 直接常量(字面常量) } 符号常量 (用标识符表示的常量) 用标识符表示的常量) 运行结果:total=300 运行结果 整型常量 实型常量 字符常量
替换时是做简单地置换, 替换时是做简单地置换,不作正确性检查