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章数据类型、运算符与表达式ppt课件

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语言教程课件第二章 数据类型、运算符和表达式

C语言教程课件第二章 数据类型、运算符和表达式

例 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf("a+u=%d,b+u=%d\n",c,d); }
例 向字符变量赋以整数。 • 运行结果: #include <stdio.h> a b void main() 97 98 { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }
• 说明:在第4和第5行中,将整数97和98分别赋给c1和c2,它 的作用相当于以下两个赋值语句: c1='a';c2='b'; 因为'a'和'b'的ASCII码为97和98
• 字符型变量用来存放字符常量,注意只能放一个字符。 • 字符变量的定义形式如下:char c1,c2; • 在本函数中可以用下面语句对c1,c2赋值: c1='a';c2='b'; • 一个字符变量在内存中占一个字节; • 将一个字符常量放到一个字符变量中,是将该字符的 相应的ASCII代码放到存储单元中,这样使字符型数据 和整型数据之间可以通用。一个字符数据既可以以字 符形式输出,也可以以整数形式输出。
运行结果: total=300 例2.1 符号常量的使用 #define PRICE 30 #include <stdio.h> void main ( ) 说明:如再用赋值语句给PRICE赋值是错的 { PRICE=40;/*错误,不能给符号常量赋值*/ int num, total; num=10; total=num * PRICE; printf(″total=%d\n ″,total); } 说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在 本文件中出现的PRICE都代表30,可以和常量一样进行运算

c语言数据类型ppt课件

c语言数据类型ppt课件

强制转换
强制类型转换
在C语言中,可以使用强制类型转换将一个值从一种类型转换为另一种类型。强制类型 转换的语法是 `(目标类型) 表达式`。
强制类型转换的注意事项
强制类型转换可能会导致数据丢失或溢出,因此在使用时需要谨慎。在强制类型转换之 前,应该了解目标类型的范围和精度,以及源类型的值是否适合目标类型。
整型
用于存储整数,包括short、int 、long等。
浮点型
用于存储小数,包括float、 double等。
数据类型的分类
01
02
03
字符型
用于存储字符,用char表 示。
布尔型
用于存储逻辑值,用bool 表示(C语言中没有内置 的bool类型,通常用int代 替)。
枚举型
用于定义一组命名的整数 常量,可以增加代码的可 读性和可维护性。
浮点型
总结词
用于表示小数和实数。
详细描述
浮点型数据类型用于存储小数和实数,包括单精度浮点型(float)和双精度浮点型(double)。这些类型用于 表示小数、分数和科学计数法表示的数。
字符型
总结词
用于表示字符。
详细描述
字符型数据类型用于存储单个字符,使用单引号括起来。在C语言中,字符实际上是以整数形式存储 的,可以使用字符型进行算术运算。
数据类型的重要性
数据类型是编程中不可或缺的元素, 它有助于提高代码的可读性和可维护 性。
数据类型的选择还影响到程序的性能 和内存使用,因此合理使用数据类型 可以提高程序的效率和降低资源消耗 。
通过使用适当的数据类型,可以确保 变量或函数存储的数据的正确性和可 靠性,并限制对数据的非法操作。
数据类型的分类

数据类型、运算符与表达式

数据类型、运算符与表达式
上一页 下一页 返回
6.1 一维数组
例6.4程序中第一个for语句逐个输入10个数到数组a中,然后把a[0]送 入max中。在第一个for语句中,a[1]到a[9]逐个与max中的内容比 较,若比max的值大,则把该下标变量送入max中,因此max在己 比较过的下标变量中总是为最大者。比较结束,输出的max值即 为10个整数的最大值。
2.5 字符型数据
2.5.1 字符常量
1.字符常量的定义 用一对单引号括起来的单个字符,称为字符常量。例如,'
A','6','+'等。 2.转义字符
C语言还允许使用一种特殊形式的字符常量,就是以反斜杠 “\”开头的转义字符,该形式将反斜杠后面的字符转变成另外的 意义,因而称为转义字符。
下一页 返回
第2章 数据类型、运算符与表达式
2.1 C语言的数据类型 2.2 标识符、常量和变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 算术运算与算术表达式 2.7 赋值运算与赋值表达式 2.8 自增、自减与逗号运算
2.1 C语言的数据类型
C语言提供有丰富的数据类型。其数据类型及其分类关系如 图2-1所示。
int i,max,a【10」; printf(”input 10 numbers:\n");
上一页 下一页 返回
6.1 一维数组
for(1=0;1<10;1++) scanf(”%d”,&a[i]);
max=a[0]; for(i=1;i<10;i++)
if(a[i]>max) max=a[i]; printf("maxnum=%d\n",max);
形பைடு நூலகம்输出。

C语言完整 ppt课件

C语言完整 ppt课件
1.4.1 宏定义
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。

C语言程序设计 第2章 数据类型

C语言程序设计 第2章 数据类型

2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);

C语言第03章--数据类型和表达式

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
字节数

《C语言数据类型》PPT课件

《C语言数据类型》PPT课件
运行结果: a = 32.766000 b = 1.700000e+037
2. 实型变量分类 (1)单精度型变量
float型变量 占4 字节( 32位) 提供 7 位有效数字 值域: + (3.4e-38~3.4e+38)
(2)双精度型变量 double型变量 占 8 个字节( 64位) 提供 15~16位有效数字 值域:+ ( 1.7e-308~1.7e+308)
4.整型常量(整常数)三种表示形式 (1)十进制 例如: 10 、36 (2)八进制(以数字 0 开头) 例如:012(十进制10)
(3)十六进制(以数字 0+小写字母x开头)
例如:0x36(十进制54 ) 5.整型常量分类 (1)基本整型: 其数据范围 -32768 ~ 32767
(与 int 型变量一样) (2)长整型(在数值后面加字母 L(小写字母l)):
(4)符号常量 PI、 WHI
#define PI 3.141592 #define WHI "I am a student. " PI、 WHI是符号常量
例3.1输出整型常量 、字符常量的值 main() { printf( “ %d\n”, 349 ); printf( “ %d\n”, -9 ); printf( “ %C\n”, 'M' ); } 运行结果: 349 -9 M
[存储类型] 数据类型 变量名[, 变量名2 …]; 例如: int a1, a2, a3; (2)变量初始化:在定义变量的同时进行赋初值的 操作。变量初始化的一般格式:
[存储类型] 数据类型 变量名[=初值][, 变量名2[= 初值2] …];
例如: float a1=2.5, a2=5.23, a3=45.43;

C语言数据类型ppt课件

C语言数据类型ppt课件
21
2.2 常量与变量
(3)整型数据在内存中的存放形式
int x; x=10; 则变量x的值10在内存中的存放形式:
int x;
x=-10; 则变量x的值10在内存中的存放形式:
22
2.2 常量与变量
(4)整型数据的溢出
例2-2 整型数据的溢出问题
#include <stdio.h>
int main()
\r
<
\a
\‘
回车 响铃 单引号
\ddd 3位8进制数代表的字符
转义字符 \t \b \f \\ \“ \xhh
含义 水平制表 退格 换页 反斜线 双引号 2位16进制数代表的字符
12
2.2 常量与变量
如 ‘\101’ -----------‘A’ ‘\012’ -----------’\n’ ‘\376’ -----------’’ ‘\x61’ -----------’a’ ‘\060’ -----------’0’
unsigned short。 ⅲ. 无符号长整型:类型说明符为
unsigned long。
20
2.2 常量与变量
(2)整型变量的定义与使用
例2-1 整型变量的使用
#include <stdio.h> int main() {
int x,y,z; x=10;y=20; z=x+y; printf(“x+y=%d\n”,z); return 0; } 输出结果:x+y=30
说明:数据类型所占字节数随机器硬件不同而不同, 上表以IBM PC机为例。
4
2.2 常量与变量
• 数据是程序的处理对象 • C语言将数据分为常量与变量

C语言第3章数据类型、运算符、表达式

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.赋值运算符和赋值表达式

C语言课件 第3章 数据类型

C语言课件 第3章 数据类型
基本数据类型:整型, 型,字符型
主要掌握各种类型的常量表示,变量的定义, 所占存储空间的大小,取值范围
一,整型: 整型: 整型 用于表示整数 所占内存空间:随机器而异,一般微机 上一个整型数据占 2B 的内存空间. 整型的可用修饰符: short [int] long [int] unsigned int / unsigned short /unsigned long
3.1 C的基本语法单位 的基本语法单位
1,字符集 character set 2,关键字 keyword 3,标识符 identifier 标识符命名规则: 标识符命名规则: (1)由字母,数字及下划线组成,且不能以字母开头. (2)不能与关键字同名 (3)尽量"见名知义" 例如:下列标识符,是否合法?为什么? area if score student_no 2day month_3 int _sum no*3 &aa
整型变量的定义(或说明): 如: int a, c, no; long s; unsigned x, y; 等 整型常量: decimal: 12 -3 0 octal : 024 056 hexadecimal: 0x3A -0X34 long int : 12L 0L 问题:要定义两个变量x 问题:要定义两个变量x 和y,分别用于存放数据 1024 和 65536,如何确定x和y类型? 65536,如何确定x
由例题分析可知: 由例题分析可知: 常量: 常量:在程序的运行过程中其值不能被改变 的量.如程序中的3 的量.如程序中的3, 4 符号常量: 符号常量:用一个标识符代表一个有特定含 义的常量. 义的常量.如 PI 变量: 变量:在程序的运行过程中其值可以被改变 的量. 的量.如 r , v 提示:变量必须先定义, 提示:变量必须先定义,后使用

c语言-数据类型、运算符与表达式

c语言-数据类型、运算符与表达式

c语⾔-数据类型、运算符与表达式⼀、数据类型1、概念(1)标识符1.定义:⽤来标记常量、变量、函数及⽂件名字的字符序列。

2.构成规则:只能由数字、字母、下划线三部分组成,且不能以数字开头,并且严格区别⼤⼩写,不能定义为系统中存在的关键字。

(2)关键字c语⾔中具有特定含义、专门⽤作语⾔特定成分的⼀类标识符注:在C语⾔中,所有的关键字都有固定的意义,不能⽤作其它,且所有的关键字都必须⼩写(3)c的数据类型数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)(4)常量和变量1. 常量【1】常量:在程序运⾏过程中,其值不能被改变的量 常量区分为不同类型(表⽰形式),如:12、1.0、‘a’【2】符号常量:⽤⼀个标识符代表的⼀个常量定义⽅法:#define 标识符常量#define PRICE 30#include <stdio.h>void main(){int num,total;num = 10;total = num * PRICE;printf("total = %d",total);}2. 变量【1】变量:其值是可以改变的量,它⽤标识符(变量名)来表⽰,在内存中占据⼀定的存储单元变量的定义⽅法:类型符标识符注意事项:<1>见名知意 <2>先定义后使⽤ <3>习惯上,符号常量名⽤⼤写,变量名⽤⼩写,以⽰区别【2】变量赋初值变量先定义,后使⽤,⼀般放在函数开头变量初始化:可以在定义时赋初值2、整型数据(1)整型常量1. 各种进制的整数表⽰⽅法⼗进制整数:由数字0~9和正负号表⽰. 如 123,-456,0⼋进制整数:由数字0开头,后跟数字0~7表⽰. 如 0123,011⼗六进制整数:由0x开头,后跟0~9,a~f,A~F表⽰. 如 0x123,0xff2. 整型常量的类型【1】整型常量的值在-32768~+32767范围内,编译器认为是int类型【2】整型常量的值超过上述范围,⽽在-2147483648 ~ +2147483647范围内,编译器认为是long类型【3】当系统定义short int与int占内存长度相同,则两种类型常量均可以赋给 int和short int型变量【4】在整型常量后⾯加⼤写L或⼩写l,则告诉编译器,把该整型常量作为long类型处理。

C语言第02章 数据类型、运算符与表达式ppt课件

C语言第02章 数据类型、运算符与表达式ppt课件
1、整型、实型、字符型数据之间可以混合运 算
整型〔包括int,short,long〕和实型〔包括float,double〕数 据可以混合运算,另外字符型数据和整型数据可以通用,因此, 整型、实型、字符型数据之间可以混合运算。
例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
回到
回到
2.2常量与变量
首页
2.2、变量的定义 〔1〕变量是先定义,后使用。
定义一个变量需要提供两方面的信息:变量的名字和 类型
〔2〕定义格式 类型说明符 变量1, 变量2,…;
如 int number;
回到
2.3整 型 数 据
首页
1、整型常量的表示方法 〔1〕 十进制整常数。没有前缀 〔2〕 八进制整常数。以0作为前缀。 〔3〕 十六进制整常数。十六进制整常数的前 缀为0X或0x。
实型变量提供的有效数字是有限的
一个很大的数+一个很小的数,没有意义
回到
2.4实 型 数
首页
2、实型变量
【例2.8】 显示个人微机上不同类型变量所占的字节数
回到
2.5字符型数据
首页
1、字符常量 〔1〕定义 字符常量是用单引号〔' '〕括起来的一个字符。 例如,'a'、'='、'?'都是合法的字符常量。 〔2〕字符常量特点
回到
作业和实验习题
首页
作业:P41 2.3 2.4 2.7 2.9 2.11〔做在书 上〕 2.12
实验:
P20 例2.2 2.3
P23 例2.4
P24 例2.5
P27 例2.7

2 C语言的基本数据类型与表达式

2 C语言的基本数据类型与表达式

float:单精度浮点型,近似表示实数,在MS DOS 上,每个浮点型变量分配 32 bit 存储空间。浮点型 都是有符号的,可表示数值范围分为三段:-1038 至 -10-38, 0, 10-38 至 1038。数值都先化成指数,再用 二进制存储。6 - 7 位有效数字。 例如:float x, y; 等。 double:双精度型,近似表示更大实数,在MS DOS 上,每个浮点型变量分配 64 bit 存储空间。双精度 型都是有符号的,可表示数值范围分为三段:-10308 至 -10-308, 0, 10-308 至 10308。数值都先化成指数, 再用二进制存储。15 - 16 位有效数字。 例如:double x, y; 等。
设a=10,b=4,c=5 x+=5 x=x+5 90 求:a*=b+c x*=y+8 x=x*(y+8) x%=3 a*=b x=x%3 a=a*b
(2009.3) 14.设有定义:int x=2;,以下表达式中, 值不为6的是 D A)x*=x+1 B)x++,2*x C)x*=(1+x) D)2*x,x+=2
例2.4 整型变量定义及赋初值
void main() { int x,y,z,w; unsigned int k; x=10; y=-20; k=30; z=x+k; w=y+k; printf("x+k=%d,y+k=%d\n",z,w); }
例2.5 字符型变量定义及赋初值
void main() { char c1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; printf("%c %c",c1,c2); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("%lds,%fm\n", secondsf(20.),20.);
• 改用下面语句试验:
for (x = 10.0; x <= 20.0; x += 1.0) printf("%lds, %fm\n",secondsf(x),x); 在某个系统里程序输出了: 12367s, 10.000000m 33617s, 11.000000m 91328s, 12.000000m 248695s, 13.000000m 662167s, 14.000000m 1673859s, 15.000000m 然后就又没反应了,程序也不终止。
整型常量(整数)
• 整数的表示
三种表现形式: – 十进制整数:正、负号,0-9,首位不是0
例: 10,123
– 八进制整数:正、负号,0-7,首位是0
例: 010,0123
– 16进制整数:正、负号,0-9,a-f,A-F,前 缀是0x,0X
例:0x10,0x123
整数的表示
123 = 01111011 (B) 二进制 =173 (O) 八进制 =7B (X) 十六进制 123 0173 0x7b 16 020 0x10 10 012 0XA 10 010 0x10
– 将一批较小的数加到很大的数上,会导致丢掉较小的数 的重要部分,甚至使较小数整个被丢掉(例中情况) – 两个值接近的数相减,可能导致结果的精度大大下降
6.2 常量和变量
6.2.1 常量 常量的类型通常由书写格式决定。
123 (整型) 4.56 (实型) 'A' (字符型)
符号常量:用一个标识符代表一个常量。
float x = 1234567.89;
虽在取值范围内,但无法精确表达。 1234567.80
float y = 1.2e55;
y 的精度要求不高,但超出取值范围。
• 并不是所有的实数都能在计算机中精确表示 • 实型常量的类型都是double
艰难旅程(浮点误差)
• 有只乌龟想去环球旅行。出发时它踌躇满 志,第一秒四脚飞奔爬了1米。随着体力和 毅力下降,第二秒钟爬了1/2米,第三秒钟 爬了1/3米,第四秒钟爬了1/4米,…。问这 只乌龟一小时能爬出多远?爬出20米需要 多少时间? • 根据数学知识,乌龟可以完成环球,只要 有足够时间它可以爬到任何地方。 • 用这个例子研究float和double的计算误 差问题。
整型数的取值范围
int 32位 -2147483648 ~ 2147483647 -231 ~ 231-1 short [int] 16位 -32768 ~ 32767 -215 ~ 215-1 long [int] 32位 -2147483648 ~ 2147483647 -231 ~ 231-1 unsigned [int] 32位 0 ~ 4294967295 unsigned short [int] 16位 0 ~ 65535 unsigned long [int] 32位 0 ~ 4294967295 0 ~ 232-1 0 ~ 216-1 0 ~ 232-1
• 可见对乌龟活动的模拟受到数据表示的精度和范 围的限制。
• 用double改写程序,20亿秒时和还在增长,输出:
2000000000s, 21.993629m 经过大约63年半,乌龟爬了近22米。在大约2亿5千万秒( 约8年)爬过了20米,这是题目第二部分的答案
• 由于long为32位表示,在此范围内没找到用double 时的增长结束点。但一定比用float大得多(float应 该慎用) • 浮点计算误差是必然出现的现象,一些特殊情况中 误差的积累可能更迅速。两个重要情况:
• 字符型
char 8位
• 实型(浮点型)
单精度浮点型 float 32位 双精度浮点型 double 64位
整型
有符号 short 1 000 0000 0000 0000 -32768 -215 0 111 1111 1111 1111 32767 215-1 无符号 unsigned short 0000 0000 0000 0000 0 1111 1111 1111 1111 65535 216-1
-32768 = -32767-1
• 补码 1 000 0000 0000 0000 (2个字节的存储单元能存储的最小负数)
-32768
-1 0 1
32767
32767 0111 1111 1111 1111 …… 1 0000 0000 0000 0001 0 0000 0000 0000 0000 -1 1111 1111 1111 1111 -2 1111 1111 1111 1110 …… -32767 1000 0000 0000 0001 -32768 1000 0000 0000 0000
1 000 0001 1000 0001 0 000 0001 1000 0001
符号位 1:负数 : 0:正数 :
数值的表示方法-原码 反码 补码
• 正数的原码、反码和补码相同
1 的补码 0 000 0000 0000 0001 …… 32767 的补码 0 111 1111 1111 1111 (215-1,2个字节的存储单元能存储的最大正数)
– 科学计数法
6.026E-27 1.2e+30 1E-5

实数的类型
double
字符型常量
• 字符常量
'a' 'A' '9' '+' '$'
• ASCII字符集
列出所有可用的字符(256个) – 每个字符:惟一的次序值( ASCII 码) – '0'-'9' 升序排列 – 'A'-'Z' – 'a'-'z'
通常用大写字母
符号常量的优点
# include <stdio.h> int main(void) { double r, s, v; scanf("%lf", &r); s = 4.0*r*r*3.14 3.14159 ; v = 4.0/3.0*r*r*r*3.14 3.14159 ; ...... return 0; } } # include <stdio.h> 3.14159 # define PI 3.14 int main(void) { double r, s, v; scanf("%lf", &r); s = 4.0*PI*r*r ; v = 4.0/3.0*PI*r*r*r ; ...... return 0;
字符的数值特征
字符-ASCII 码
对字符进行运算 - 对字符的ASCII 码进行运算
例如: 'A' 的 ASCII 码 65 区分数字字符和数字 '1' 1
则:'A'+1=66,对应字符 'B'
转 义 字 符
• 反斜杠后跟一个字符或数字 • 字符常量,代表一个字符
π:PI ε:EPS
例5-1 求球的表面积和体积
#include <stdio.h> #define PI 3.14 int main(void) { double r, s, v;
加分号? 加分号?
printf(“Enter r: "); scanf("%lf", &r); s = 4.0 * PI * r * r ; v = 4.0 / 3.0 * PI * r * r * r ; printf("s=%f, v=%f\n", s, v); return 0; }
• 下面只考虑后一问题,定义一个计算多少秒 爬d米的函数secondsf()。
long secondsf (float d) {/*用float计算*/ long i; float x = 0.0; for(i=1; x<d;++i) x+=1/(float)i; return i - 1; }
• 执行下面语句,很长时间程序不终止也不输 出:
数据精度 (有效数字) 4字节 七/八位 十六位 存储 取值范围 ±(10-38 ~ 1038) ±(10-308 ~ 10308 )
float
double 8字节
• double 常量:一个数字序列,其中或者包含小数 点“.”(可以是首/末字符),或者包含指数部分 。
– 指数:e/E 开头数字序列(可带符号),以10为底。可 同时有小数点和指数。 – 例: 3.2 3. 2E-3 2.45e17 – Error: . 2E 3.0E-1.5
字符型
• 字符具有数值特征
'A' 65 0100 0001
• 整型变量和字符变量的定义和赋值可以互换
[ASCII码范围]。 char c; c = 'A'; 或 c = 65; int i; i = 65; 或 i = 'A';
实型
实型(浮点型)数据 • 单精度浮点型 float • 双精度浮点型 double • 长双精度类型 long double 最基本最常用的实数类型是 double
• 考虑如下的测试函数:
void test_float() {/*多少项后和不再变化?*/ long i; float sum = 0.0, sum0 = -1.0; for (i = 1; sum != sum0; ++i) { sum0 = sum; sum += 1 / (float)i; } printf ("float: %ld terms at %f\n", i-1, sum); } 程序很快就输出了一行: float: 2097152 terms at 15.403683
相关文档
最新文档