C语言第二章数据类型及表达式解析
合集下载
第2章C语言的基本数据类型与表达式

程序运行结果为: x+k=40,y+k=10
2019/6/8
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
14
例,完善程序(s1-3.c) 程序功能:下面的程序是求整数a/b 的商和余数,
请用正确的表达式填空。
main() { int a,b,c,d; a=100; b=30; _________ _________ printf(“a=%d, b=%d, c=%d, d=%d\n”,
如:25(short),25l(长整型),25u(无符号),25ul(无符号长)
3、值域:
由机器中数据的存储长度决定。
如Turbo C中,有 short(2字节)≤int(2字节) ≤long(4字节)
关键字
所占位数
取值范围
short
16(2B)
-32768~32767
unsigned short
16(2B)
字宽(字节) 1 1
1 2 2 2 2或4 2或4 2或4 4 4 4 4 8 16
0010 0008 0006 0004 0002 0000
2019/6/8
C语言程序设计教程
3
double float int
第2章 C语言的基本数据类型与表达式
4
二、整型
1、常量:
(1) 十进制形式:与数学上的整数表示相同;
long
unsigned
int
char,short
99.5 + 5
104.5(double)
2019/6/8
C语言程序设计教程第2章 CΒιβλιοθήκη 言的基本数据类型与表达式19
二、关系运算符和关系表达式
2019/6/8
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
14
例,完善程序(s1-3.c) 程序功能:下面的程序是求整数a/b 的商和余数,
请用正确的表达式填空。
main() { int a,b,c,d; a=100; b=30; _________ _________ printf(“a=%d, b=%d, c=%d, d=%d\n”,
如:25(short),25l(长整型),25u(无符号),25ul(无符号长)
3、值域:
由机器中数据的存储长度决定。
如Turbo C中,有 short(2字节)≤int(2字节) ≤long(4字节)
关键字
所占位数
取值范围
short
16(2B)
-32768~32767
unsigned short
16(2B)
字宽(字节) 1 1
1 2 2 2 2或4 2或4 2或4 4 4 4 4 8 16
0010 0008 0006 0004 0002 0000
2019/6/8
C语言程序设计教程
3
double float int
第2章 C语言的基本数据类型与表达式
4
二、整型
1、常量:
(1) 十进制形式:与数学上的整数表示相同;
long
unsigned
int
char,short
99.5 + 5
104.5(double)
2019/6/8
C语言程序设计教程第2章 CΒιβλιοθήκη 言的基本数据类型与表达式19
二、关系运算符和关系表达式
C语言之 2-2 数据类型、运算符和表达式

同样也可以在%和浮点数格式说明符之间一些修饰,用来确 定浮点数据的显示宽度、精度及对齐方式。其一般形式为: %[-][m.n]浮点格式说明符 -:依然表示数据输出时左对齐; m.n:m表示整个数据的输出宽度,n表示小数部分输出的位 数。 【例3.5】 #include "stdio.h" void main() { double pi=3.1415; printf("%f,%6.2f,%.2f,%-6.2f\n",pi,pi,pi,pi); } 程序输出结果为: 3.141500,⊔⊔3.14,3.14,3.14⊔⊔
C语言程序设计
2.3.5 赋值运算
1.简单赋值 简单赋值运算符“=“仅执行赋值操作,表达式的形式为: 操作数1=操作数2 “=“的功能是将右操作数的值赋给由左操作数指定的存储 单元(变量)。左操作数必须是一个可更改内容的左值表达式.赋 值运算符的右操作数类型可以和左操作数不同,执行赋值之前右 操作数被自动转换为左操作数的类型。
例6.y<3?-1.0:1 结果为实型, 即使y>=3,结果也为1.0。
1 a>0 0 a=0 -1 a<0
C语言程序设计
为了便于调试程序,下面讲printf。
C语言程序设计
3.2.2 格式输出函数printf
一般调用形式为: printf(“格式控制字符串”,输出项表列); 其功能是按“格式控制字符串”所指定的格式,在 计算机标准输出设备(通常为显示器)上依次输出由输 出项表列所指定的输出项。 输出项表列用于指定输出内容,它通常由一个或多 个输出项构成,当有多个输出项时,输出项之间应使用 逗号“,”分隔,输出项可以是常量、变量或表达式。 输出项的顺序、个数与类型要与“格式控制字符串”中 的格式说明符的顺序、个数、类型相匹配。 “格式控制字符串”是使用一对双撇号括起来的字 符串,用于指定后面各个输出项的输出格式。它一般包 含两个方面的信息:格式说明(以%开头的若干个字符) 和普通字符。
C语言学习第二章数据类型

基本整型:表示范围为0~0177777。 ③十六进制数:
基本整型:表示的范围为0X0~0XFFFF。
2.4.2 整型变量
1.整型变量在内存中的存放形式
以二进制补码的形式存放。
正数:最高位为0,其余各位是该数的二进制表示 负数:最高位为1,其余各位是该数绝对值的二进制
再按位取反加1
2. 整型变量的分类
放一个字符。
下面是对c1、c2赋值: c1=‘a’;c2=‘b’; (实际上其内存中存放的是该字符的ASCII码)
字符变量的初始化,如:char c1=‘a’,c2=‘b’;
2.5.3 字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,实际上是将该字 符的ASCII代码以二进制形式放到存储单元中。
无符号型:(只能存放0和正整数) ① 基本整型:类型说明符为unsigned int或unsigned
在内存中占2个字节 取值范围为0~2161,即0~65535。 ② 短整型:类型说明符为unsigned short (int) 所占字节和取值范围均同基本整型。 ③ 长整型:类型说明符为unsigned long (int) 在内存中占4个字节 其取值范围是0~2321 即0~4294967295
实型常量也称为实数或者浮点数。 实型常量不分单、双精度,都按双精度double型处理,其有 效位数为(15~)16位。
实型常量的表示方式有:
(1)十进制小数形式
小数形式由数字0~ 9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小 数点不可省略。
例如:
0.0 , .25 ,5.789 ,0.13 ,5.0 , 300. 267.8230 , 123. 等均为合法的实数。
基本整型:表示的范围为0X0~0XFFFF。
2.4.2 整型变量
1.整型变量在内存中的存放形式
以二进制补码的形式存放。
正数:最高位为0,其余各位是该数的二进制表示 负数:最高位为1,其余各位是该数绝对值的二进制
再按位取反加1
2. 整型变量的分类
放一个字符。
下面是对c1、c2赋值: c1=‘a’;c2=‘b’; (实际上其内存中存放的是该字符的ASCII码)
字符变量的初始化,如:char c1=‘a’,c2=‘b’;
2.5.3 字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,实际上是将该字 符的ASCII代码以二进制形式放到存储单元中。
无符号型:(只能存放0和正整数) ① 基本整型:类型说明符为unsigned int或unsigned
在内存中占2个字节 取值范围为0~2161,即0~65535。 ② 短整型:类型说明符为unsigned short (int) 所占字节和取值范围均同基本整型。 ③ 长整型:类型说明符为unsigned long (int) 在内存中占4个字节 其取值范围是0~2321 即0~4294967295
实型常量也称为实数或者浮点数。 实型常量不分单、双精度,都按双精度double型处理,其有 效位数为(15~)16位。
实型常量的表示方式有:
(1)十进制小数形式
小数形式由数字0~ 9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小 数点不可省略。
例如:
0.0 , .25 ,5.789 ,0.13 ,5.0 , 300. 267.8230 , 123. 等均为合法的实数。
《C语言程序设计》第二章 数据类型、运算符和表达式

用户标识符 作用:标记常数、变量、自定义数据类型、函数及 程序的名字
取名规则:
以字母或下划线‘_’中任一字符打头; 在第一字符之后,可以是任意的字母、下划线或数 字组成的字符序列,这个字符序列可以是空串。
用户标识符
说明:
不要与保留字同名; C语言中大小写字母有不同的含义,即区分大小写。 name和Name在C中是两个不同的标识符; 习惯上除了符号常数,一般都用小写字母表示; 标识符长度不限,但只识别前8个字符。 例: 正确:a, a1, f_1, area, _age 错误:2a, last name, no#, -xy, char
变量的定义 变量表示在C程序中的基本存储单元。变量是指在程 序运行过程中其值可以改变的量。变量必须“先定义 后使用”。
定义一般形式: 类型
例: int age, index; float x, y;
变量标识符表;
double z;
定义一般形式: 类型 定义变量的作用:
变量标识符表;
使一变量属于某一确定的类型,即规定该 变量的取值范围及它能执行的运算操作 ; 编译时能为其分配相应的存储单元,并确 定其存储形式,同时根据其定义检查该变量所 进行的运算合法性 。
短整型(short int )
整型
整型(int) 长整型(long int)
C 中 的 类 型 划 分
基本类型
实型
单精度型(float) 双精度型(double)
构造类型
数组类型 结构类型(struct) 共用体(union) 文件类型(FILE)
指针类型 空类型(void)
不同类型 的数据在计 算机中的存 储格式也不 同,以32位 机为例说明。
C语言第02章 数据类型、运算符与表达式

回到 首页
运算符和结合性 P325,附录3
2.8 算术运算符和算术表达式
3、自增、自减运算符
自增运算符++和自减运算符--均是单目运算符, 功能是使变量的值增1或减1。其优先级高于所有 双目运算符,结合性为右结合性(自右至左)。
回到 首页
例如:++i或i++ 等价于i=i+1; --i或i-- 等价于i=i-1;
2.7数值型数据之间的混合运算
回到 首页
1、整型、实型、字符型数据之间可以混合运 算
整型(包括int,short,long)和实型(包括float,double)数据可 以混合运算,另外字符型数据和整型数据可以通用,因此,整 型、实型、字符型数据之间可以混合运算。 例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
2.9赋值运算符和赋值表达式
1、赋值运算符和赋值表达式
赋值运算符:“=”为双目运算符,右结合性。 赋值表达式:由赋值运算符组成的表达式称为赋值表达 式。 赋值表达式一般形式: 变量 赋值符 表达式 如 a=5 类型转换:将高精度的数据类型赋值给低精度的数据类 型,可能出错。
回到 首页
2.9赋值运算符和赋值表达式
2.8 算术运算符和算术表达式
3、自增、自减运算符
回到 首页
y=++x;等价于先计算x=x+1(结果x=6),再执行y=x,结果y=6。 y=x++;等价于先执行y=x,再计算x=x+1,结果y=5,x=6。 y=x++*x++;结果y=25,x=7。x++为后缀形式,先取x的值进行“*” 运算,再进行两次x++。 y=++x*++x;结果y=49,x=7。
C程序设计 第2章 数据类型及表达式

常见的转义字符
字符形式 \n \t \v \b \r \f \\ \’ \“ \ ddd \ xhh 换行 横向跳格(即跳到下一个输出区) 纵向跳格 退格 光标移到当前行开头 走纸换页 反斜杠字符“\” 单引号字符 双引号字符 1到3位八进制字符。如\ 123表示八进制数123, 即十进制数83 1到2位十六进制字符。如\x21,表示十六进制数 21,即十进制数33 功 能
第2章 数据类型及表达式
整型 字符型 基本类型 实型 (浮点型) 枚举类型 数据类型 数组类型 构造类型 结构体类型 共用体类型 指针类型 空类型 单精度型 双精度型
常量
在程序运行过程中其值不能改变的量叫做常量。常量 分为整型常量、实型常量和字符型常量等。 整型常量有23 、-7 、036(八进制) 、0x2d(十六进制) 、 5L(长整型常量)等。 实型常量有5.87 、2e3(指数形式)等。 字符型常量有’a’、’\n’(转义字符) 、”china”(字符串 常量)等。 可以使用标识符代表一个常量,例如:#define PI 3.14 PI就称为符号常量。 C语言规定标识符以字母开头,由字母、数字或下划线 组成。 一般符号常量名用大写字母,变量名用小写字母。
字符型变量
char c=‘a’;/*定义字符型变量c,并初始化*/ 字符型数据按ASCII码存储,占一个字节。 给字符变量赋值时可以赋予字符的ASCII码。例 如:char a=65的结果是a变量中存放字母A 。
例如
main ( ) {char a=’a’,b=’b’,c=’c’,d=65; a=a+1;b=b+2;c=c+3;d=d+4; printf(“%c%c%c%c\n“,a,b,c,d); } 运行结果:bdfE
C语言第2章基本数据类型与表达式

2.1.3 关键字
关键字(又称保留字)是一种语言中规定具有特定含义的标识符。 C语言可使用以下32个关键字:
auto
double int struct
break
else long switch
case
enum
char
extern
const
float short
continue default
for signed goto sizeof
例: main() { int x,y,z,w; /*定义x,y,z,w为整型变量*/ unsigned int k; /*定义k为无符号整型变量*/ x=10; y=-20; k=30; z=x+k;w=y+k; /*不同类型的整型变量x、y、k可运算*/ printf(″x+k=%d,y+k=%d\n″,z,w); } 程序运行结果为: x+k=40,y+k=10
3. 字符常量
C语言的字符常量是用单撇号括起来的一个字符。如 ′x′,′+′,′\n′,′\101′都是合法的字符常量。 字符数据在内存中是以ASCII码存储,它的存储形式与整数的存储 形式类似。因此可以通用。例如: #include <stdio.h> main() { char c1,c2; c1=97; c2=98; printf(″%c ,%c\n″c1,c2); printf(″%d, %d\n″c1,c2); } 在程序中我们将整数97和98分别赋给c1和c2,它的作用相当于以 下两个赋值语句: c1=′a′; c2=′b′; 运行时输出结果如下: a,b
4. 字符串常量
• C语言没有专门的字符串类型变量,但有字符串 常量。字符串常量是由一对双撇号括起来的字符 序列。 如:″changsha″, ″central south university″,″+++ \\?ab″都是合法的字符串常量。 • 不要将字符常量与字符串常量混淆。如: ′a′是字符常量, ″a″是字符串常量
C语言第二章数据类型及表达式解析

16
2.1.3 字符型
例2.2
1 #include <stdio.h> 2 int main() 3{ 4 int i, j; 5 char c1,c2; 6 c1='a'; //字符数据赋值给字符型 7 c2=98; //整数数据赋值给字符型 8 i='A'; //字符数据赋值给整型 9 j=66; //整数数据赋值给整型 10 printf("i=%d , j=%d , c1=%c , c2=%c\n",i,j,c1,c2); 11 printf("c1-32=%c\n",c1-32); //字符型可以进行减法运算 12 return 0; 13 }
13
2.1.3 字符型 ► C语言字符型分为有符号(signed char)和无符号 (unsigned char)两种,其中signed书写时可以省略。 ► 字符型数据在内存中占用1个字节,采用二进制形式存储。
14
2.1.3 字符型 ► 字符型数据可以存储整型数值,有时也称为字节型。字符 型数据存储整数时的内存形式与整型一样,只不过其数值 范围要小得多。 ► 字符型数据可以存储单字节字符,如ASCII码,此时在内存 中的数据是字符的ASCII码值。例如字符'A'在内存中的存储 形式为
3.41038 3.41038
1.710308 1.710308
同上/ 1.2104932 1.2104932
精度
7 16 19
5
2.1.1 整型 ► C语言整型分为长整型(long int)、基本整型(int)和短 整型(short int) ► long int可以简写为long、short int可以简写为short。 ► int型数据的内存长度与系统平台相关,通常int型为机器的 一个字长,short型不比int型长,long型不比int短。
2.1.3 字符型
例2.2
1 #include <stdio.h> 2 int main() 3{ 4 int i, j; 5 char c1,c2; 6 c1='a'; //字符数据赋值给字符型 7 c2=98; //整数数据赋值给字符型 8 i='A'; //字符数据赋值给整型 9 j=66; //整数数据赋值给整型 10 printf("i=%d , j=%d , c1=%c , c2=%c\n",i,j,c1,c2); 11 printf("c1-32=%c\n",c1-32); //字符型可以进行减法运算 12 return 0; 13 }
13
2.1.3 字符型 ► C语言字符型分为有符号(signed char)和无符号 (unsigned char)两种,其中signed书写时可以省略。 ► 字符型数据在内存中占用1个字节,采用二进制形式存储。
14
2.1.3 字符型 ► 字符型数据可以存储整型数值,有时也称为字节型。字符 型数据存储整数时的内存形式与整型一样,只不过其数值 范围要小得多。 ► 字符型数据可以存储单字节字符,如ASCII码,此时在内存 中的数据是字符的ASCII码值。例如字符'A'在内存中的存储 形式为
3.41038 3.41038
1.710308 1.710308
同上/ 1.2104932 1.2104932
精度
7 16 19
5
2.1.1 整型 ► C语言整型分为长整型(long int)、基本整型(int)和短 整型(short int) ► long int可以简写为long、short int可以简写为short。 ► int型数据的内存长度与系统平台相关,通常int型为机器的 一个字长,short型不比int型长,long型不比int短。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
2.1.2 浮点型
例2.1
15 return 0; 16 }
程序运行屏幕
a=111111.1093750000000000 , b=111111.1093750000000000 c=111111.1110067800000000 , d=111111.1110012300100000 e=100000000000000110000.000000
3.41038 3.41038
1.710308 1.710308
同上/ 1.2104932 1.2104932
精度
7 16 19
5
2.1.1 整型 ► C语言整型分为长整型(long int)、基本整型(int)和短 整型(short int) ► long int可以简写为long、short int可以简写为short。 ► int型数据的内存长度与系统平台相关,通常int型为机器的 一个字长,short型不比int型长,long型不比int短。
► 浮点型数据在内存中的存储方式按IEEE 754浮点数标准处理, 不同于整型数据那样直接的二进制表示。
10
2.1.2 浮点型 ► 因为浮点型数据长度和精度是有限的,所以浮点数存在舍 入误差和计算误差。虽然浮点数精度越高计算结果越精确, 但其处理时间也长。
一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制 使得很小的浮点数被忽略了,从而使得这样的加法无意义。 两个浮点数做比较,由于有误差很难做到绝对相等,只能通过它 们差的绝对值小于一个很小的数来判断是否近似相等。
6
2.1.1 整型 整型数据的存储方式为二进制补码形式,例如短整型数123在内 存中的存储形式为 短整型数-123在内存中的存储形式为
7
2.1.1 整型 整型还分有符号(signed)和无符号(unsigned)类型,其中 signed书写时可以省略。
图2.1 有符号和无符号短整型的数值范围
一般地,由于计算机处理整型速度快,因此若运算不涉及小数, 就尽量选用整型。而那些没有负值的整数,如学号、逻辑值、字 节值、地址、索引值等选用unsigned类型。
9
2.1.2 浮点型
► C语言浮点型又称实型,分为单精度(float)、双精度 (double)和长双精度(long double)3种。
► 在VC中规定float型在内存中占用4个字节,提供7位有效数 字;double型和long double型在内存中占用8个字节,提 供16位有效数字。在GCC中long double型在内存中占用12 个字节,提供19位有效数字。
3
2.1 数据类型 C语言内置数据类型
4
2.1 数据类型
表2-1 基本类型数据的内存长度和数值范围
类型
类型标识符
内存长度
整型
[signed] int
4
无符号整型
unsigned [int]
4
短整型
[signed] short [int] 2
无符号短整型 unsigned short [int] 2
第2章 数据类型与表达式
1
第2章 数据类型与表达式
► 2.1 数据类型 ► 2.2 常量 ► 2.3 变量 ► 2.4 运算符与表达式 ► 2.5 类型转换
2
2.1 数据类型
利用计算机求解问题,首先需要将实际问题的数据引入到计算机 中,即在程序中描述这些数据。 由于计算机存储和处理上的特点,数据是以某种特定的形式存在 的(如整数、浮点数、字符信息等),不同的数据之间还存在某 些联系。 程序语言通过数据类型描述不同的数据形式,数据类型不同,求 解问题的算法也会不同。类型是所有程序的基础,它告诉我们数 据代表什么意思以及对数据可以执行哪些操作。
13
2.1.3 字符型 ► C语言字符型分为有符号(signed char)和无符号 (unsigned char)两种,其中signed书写时可以省略。 ► 字符型数据在内存中占用1个字节,采用二进制形式存储。
8
2.1.1 整型 ► 不同的数据类型规定了不同的机器数长度,决定了对应数 据的数值范围,当一个整数超出此范围时计算机会将其转 换为在数值范围内所允许的一个数,称为整型数据的溢出 处理。 ► 一般地,超过最大值的有符号整型数值会向上溢出变成负 数,超过最小值的数据会向下溢出变成正数。
图2.2 short型的溢出
长整型
[signed] long [int]
4
无符号长整型 unsigned long [int] 4
字符型
[signed] char
1
无符号字符型 unsigned char
1Leabharlann 单精度型float
4
双精度型
double
8
长双精度型
long double
同上/12
数值范围 -2147483648~+2147483647 0~4294967295 -32768~+32767 0~65535 -2147483648~+2147483647 0~4294967295 -128~+127 0~255
11
2.1.2 浮点型
例2.1
1 #include <stdio.h> 2 int main() 3{ 4 float a=0.00000678f, b=0.00000123f; 5 double c=0.00000678 , d=0.00000123; 6 double e=100000000000000000000.0; 7 a = a + 111111.111f; //精度范围外的大浮点数与小浮点数相加 8 b = b + 111111.111f; //精度范围外的大浮点数与小浮点数相加 9 c = c + 111111.111; //精度范围内的大浮点数与小浮点数相加 10 d = d + 111111.111; //精度范围内的大浮点数与小浮点数相加 11 e = e + 111111.111f; //精度范围外的大浮点数与小浮点数相加 12 printf("a=%.16f , b=%.16f\n",a,b); //输出单精度浮点型a,b 13 printf("c=%.16lf , d=%.16lf\n",c,d); //输出双精度浮点型c,d 14 printf("e=%lf\n",e); //输出双精度浮点型e
2.1.2 浮点型
例2.1
15 return 0; 16 }
程序运行屏幕
a=111111.1093750000000000 , b=111111.1093750000000000 c=111111.1110067800000000 , d=111111.1110012300100000 e=100000000000000110000.000000
3.41038 3.41038
1.710308 1.710308
同上/ 1.2104932 1.2104932
精度
7 16 19
5
2.1.1 整型 ► C语言整型分为长整型(long int)、基本整型(int)和短 整型(short int) ► long int可以简写为long、short int可以简写为short。 ► int型数据的内存长度与系统平台相关,通常int型为机器的 一个字长,short型不比int型长,long型不比int短。
► 浮点型数据在内存中的存储方式按IEEE 754浮点数标准处理, 不同于整型数据那样直接的二进制表示。
10
2.1.2 浮点型 ► 因为浮点型数据长度和精度是有限的,所以浮点数存在舍 入误差和计算误差。虽然浮点数精度越高计算结果越精确, 但其处理时间也长。
一个较大的浮点数与一个很小的浮点数做加法时,由于精度限制 使得很小的浮点数被忽略了,从而使得这样的加法无意义。 两个浮点数做比较,由于有误差很难做到绝对相等,只能通过它 们差的绝对值小于一个很小的数来判断是否近似相等。
6
2.1.1 整型 整型数据的存储方式为二进制补码形式,例如短整型数123在内 存中的存储形式为 短整型数-123在内存中的存储形式为
7
2.1.1 整型 整型还分有符号(signed)和无符号(unsigned)类型,其中 signed书写时可以省略。
图2.1 有符号和无符号短整型的数值范围
一般地,由于计算机处理整型速度快,因此若运算不涉及小数, 就尽量选用整型。而那些没有负值的整数,如学号、逻辑值、字 节值、地址、索引值等选用unsigned类型。
9
2.1.2 浮点型
► C语言浮点型又称实型,分为单精度(float)、双精度 (double)和长双精度(long double)3种。
► 在VC中规定float型在内存中占用4个字节,提供7位有效数 字;double型和long double型在内存中占用8个字节,提 供16位有效数字。在GCC中long double型在内存中占用12 个字节,提供19位有效数字。
3
2.1 数据类型 C语言内置数据类型
4
2.1 数据类型
表2-1 基本类型数据的内存长度和数值范围
类型
类型标识符
内存长度
整型
[signed] int
4
无符号整型
unsigned [int]
4
短整型
[signed] short [int] 2
无符号短整型 unsigned short [int] 2
第2章 数据类型与表达式
1
第2章 数据类型与表达式
► 2.1 数据类型 ► 2.2 常量 ► 2.3 变量 ► 2.4 运算符与表达式 ► 2.5 类型转换
2
2.1 数据类型
利用计算机求解问题,首先需要将实际问题的数据引入到计算机 中,即在程序中描述这些数据。 由于计算机存储和处理上的特点,数据是以某种特定的形式存在 的(如整数、浮点数、字符信息等),不同的数据之间还存在某 些联系。 程序语言通过数据类型描述不同的数据形式,数据类型不同,求 解问题的算法也会不同。类型是所有程序的基础,它告诉我们数 据代表什么意思以及对数据可以执行哪些操作。
13
2.1.3 字符型 ► C语言字符型分为有符号(signed char)和无符号 (unsigned char)两种,其中signed书写时可以省略。 ► 字符型数据在内存中占用1个字节,采用二进制形式存储。
8
2.1.1 整型 ► 不同的数据类型规定了不同的机器数长度,决定了对应数 据的数值范围,当一个整数超出此范围时计算机会将其转 换为在数值范围内所允许的一个数,称为整型数据的溢出 处理。 ► 一般地,超过最大值的有符号整型数值会向上溢出变成负 数,超过最小值的数据会向下溢出变成正数。
图2.2 short型的溢出
长整型
[signed] long [int]
4
无符号长整型 unsigned long [int] 4
字符型
[signed] char
1
无符号字符型 unsigned char
1Leabharlann 单精度型float
4
双精度型
double
8
长双精度型
long double
同上/12
数值范围 -2147483648~+2147483647 0~4294967295 -32768~+32767 0~65535 -2147483648~+2147483647 0~4294967295 -128~+127 0~255
11
2.1.2 浮点型
例2.1
1 #include <stdio.h> 2 int main() 3{ 4 float a=0.00000678f, b=0.00000123f; 5 double c=0.00000678 , d=0.00000123; 6 double e=100000000000000000000.0; 7 a = a + 111111.111f; //精度范围外的大浮点数与小浮点数相加 8 b = b + 111111.111f; //精度范围外的大浮点数与小浮点数相加 9 c = c + 111111.111; //精度范围内的大浮点数与小浮点数相加 10 d = d + 111111.111; //精度范围内的大浮点数与小浮点数相加 11 e = e + 111111.111f; //精度范围外的大浮点数与小浮点数相加 12 printf("a=%.16f , b=%.16f\n",a,b); //输出单精度浮点型a,b 13 printf("c=%.16lf , d=%.16lf\n",c,d); //输出双精度浮点型c,d 14 printf("e=%lf\n",e); //输出双精度浮点型e