第02章-基本数据类型、运算符和表达式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如,123L,33l。
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
实型数据
常量的表示
数据在内存中 的存放形式
数据类型的分 类和变量定义
数据的精度
实数(real number)又称为浮点数(floating-point number)。因此,实型又称为浮点型。
实型常量的表示方法
• 10进制小数形式。这种实型常量由数 字和小数点组成。比如:1.2、33.24、 0.0。也可以省去整数部分,只保留小 数点和小数部分,比如:.24、.2。
• L=30;
/*这时L的值是30*/
• printf("a=%d\n",a);
• printf("b=%d\n",b);
• printf("u=%d\n",u);
• printf("L=%d\n",L);
•}
注意 • C语言程序中,变量的定义必须放在函数的声明部分
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义 变量的分类 常量的分类
C语言根据整型常量的值来决定整 型常量的类型
• 10进制常量无unsigned类型,16进制和8 进制常量按照unsigned处理。
• 位于-32768到32767之间的常量属于int型 • 超过这个值域的常量属于long型 • 带有后缀L或l的10进制数属于long型。比
第二章 《基本数据类型、运算符和表达式》
一、C语言的基本数据类型
有值,可以改变
数据的表 征形式
注意
变量 占用内存单元
有名字
有值,不能被改变
常量
不占用内存 没有名字的:值常量 有名字的:符号常量
12,3.5 #define NUM 30
• 符号常量名最好用大写字母并且有明确含义 • #define命令没有分号 • 符号常量和变量必须先定义再使用。 • 一旦定义了变量,程序将为这个变量分配一块内存
• 指数形式。比如,123.4e2表示 123.4x102、22E13表示22x1013。
注意 • 绝对不能没有小数点。
注意
• e或E前面必须有数字
• e或E后面必须是整数
• e3、.e5、12e3.5都是 错误的指数形式。
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
变量的分类 常量的分类
int的修饰符
符号修饰符 值域修饰符
signed unsigned
short long
一、C语言的基本数据类型
数据类型符
int signed int unsigned int unsigned short int short unsigned short int unsigned short
常量的分类
麻烦 • 14+(-14)=0还成立吗?
最终 • 数据在内存中用补码表示。 方案
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
变量的分类
• 一个整数的绝对值的2进制表 示在添上符号位称为这个数的 原码。
• 一个正整数和零的补码就是原 码本身。
一、C语言的基本数据类型
完整的范例
• #define NUM 0XFFFF • main() • { /*下面定义了4个整数变量*/ • int a,b=10; • unsigned int u=0xff; /*u的值是255*/ • long L;
• a=NUM;
/*这时a的值是0XFFFF,实际上是-1*/
值常量 符号常量
数据在内存中的存放形式
变量的定义
• 数据在内存中以2进制形式存放
常识
• 默认情况下一个整数需要用2个 字节
• 非负数在内存中直接存放,比 如整数14在内存中是这样的:
假定 • 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
问题 • -14如何存放?
变量的分类
思路1 • 用最高位代表符号位
-231~231-1
4
unsigned long int unsigned long
无 数值位
0~232-1
4
int a=-3;
unsigned short sb;
unsigned int u=0xFFFF; long int L=0XFF00FFAB; /*负数*/
short b=33;
unsigned long uL=0XFF00F0FF; /* 正数*/
变量的定义 变量的分类 常量的分类
#define #define #define
NUM1 NUM2 NUM3
30 026 0x1a
注意
• 8进制和16进制常量前缀中的那个 圈是数字零,不是字母O
• 019是错误的整数常量
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
• 一个负数的补码是正数的原码 取反加1的结果。反过来也一 样。
原码与补码
常量的分类
注意 • 阅读源程序时,看不到补码!如果源程序采用8、16进制数时,按照“原状”存放
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
基本格式 • int 变量名; • int a;
定义多个变量 • int a , b , c;
赋初值 • int a,b=23,c;
变量的分类 常量的分类
注意
• 变量名必须是合法标识符 • 变量名与int之间有空格 • 必须以分号结尾 • 多个变量之间用逗号分隔 • 不对变量赋初值,变量仍然有值
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
有无 符号
有
最高位 含义
符号位
无 数值位
有 符号位
无 数值位
值域
-215~215-1 [-32768..32767]
0~216-1 [0..65535] -215~215-1 [-32768..32767] 0~216-1 [0..65535]
占内存大小 (字节)
2
2
2
2
long int long
有 符号位
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
Βιβλιοθήκη Baidu
(1)10进制整数,比如:10,-23。
(2)8进制整数,以数字0开头。比 如,017实际上是(17)8。 (3)16进制整数,以0x或0X开头。 比如,0x18实际上是(18)16。
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
实型数据
常量的表示
数据在内存中 的存放形式
数据类型的分 类和变量定义
数据的精度
实数(real number)又称为浮点数(floating-point number)。因此,实型又称为浮点型。
实型常量的表示方法
• 10进制小数形式。这种实型常量由数 字和小数点组成。比如:1.2、33.24、 0.0。也可以省去整数部分,只保留小 数点和小数部分,比如:.24、.2。
• L=30;
/*这时L的值是30*/
• printf("a=%d\n",a);
• printf("b=%d\n",b);
• printf("u=%d\n",u);
• printf("L=%d\n",L);
•}
注意 • C语言程序中,变量的定义必须放在函数的声明部分
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义 变量的分类 常量的分类
C语言根据整型常量的值来决定整 型常量的类型
• 10进制常量无unsigned类型,16进制和8 进制常量按照unsigned处理。
• 位于-32768到32767之间的常量属于int型 • 超过这个值域的常量属于long型 • 带有后缀L或l的10进制数属于long型。比
第二章 《基本数据类型、运算符和表达式》
一、C语言的基本数据类型
有值,可以改变
数据的表 征形式
注意
变量 占用内存单元
有名字
有值,不能被改变
常量
不占用内存 没有名字的:值常量 有名字的:符号常量
12,3.5 #define NUM 30
• 符号常量名最好用大写字母并且有明确含义 • #define命令没有分号 • 符号常量和变量必须先定义再使用。 • 一旦定义了变量,程序将为这个变量分配一块内存
• 指数形式。比如,123.4e2表示 123.4x102、22E13表示22x1013。
注意 • 绝对不能没有小数点。
注意
• e或E前面必须有数字
• e或E后面必须是整数
• e3、.e5、12e3.5都是 错误的指数形式。
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
变量的分类 常量的分类
int的修饰符
符号修饰符 值域修饰符
signed unsigned
short long
一、C语言的基本数据类型
数据类型符
int signed int unsigned int unsigned short int short unsigned short int unsigned short
常量的分类
麻烦 • 14+(-14)=0还成立吗?
最终 • 数据在内存中用补码表示。 方案
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
变量的分类
• 一个整数的绝对值的2进制表 示在添上符号位称为这个数的 原码。
• 一个正整数和零的补码就是原 码本身。
一、C语言的基本数据类型
完整的范例
• #define NUM 0XFFFF • main() • { /*下面定义了4个整数变量*/ • int a,b=10; • unsigned int u=0xff; /*u的值是255*/ • long L;
• a=NUM;
/*这时a的值是0XFFFF,实际上是-1*/
值常量 符号常量
数据在内存中的存放形式
变量的定义
• 数据在内存中以2进制形式存放
常识
• 默认情况下一个整数需要用2个 字节
• 非负数在内存中直接存放,比 如整数14在内存中是这样的:
假定 • 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
问题 • -14如何存放?
变量的分类
思路1 • 用最高位代表符号位
-231~231-1
4
unsigned long int unsigned long
无 数值位
0~232-1
4
int a=-3;
unsigned short sb;
unsigned int u=0xFFFF; long int L=0XFF00FFAB; /*负数*/
short b=33;
unsigned long uL=0XFF00F0FF; /* 正数*/
变量的定义 变量的分类 常量的分类
#define #define #define
NUM1 NUM2 NUM3
30 026 0x1a
注意
• 8进制和16进制常量前缀中的那个 圈是数字零,不是字母O
• 019是错误的整数常量
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
• 一个负数的补码是正数的原码 取反加1的结果。反过来也一 样。
原码与补码
常量的分类
注意 • 阅读源程序时,看不到补码!如果源程序采用8、16进制数时,按照“原状”存放
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
变量的定义
基本格式 • int 变量名; • int a;
定义多个变量 • int a , b , c;
赋初值 • int a,b=23,c;
变量的分类 常量的分类
注意
• 变量名必须是合法标识符 • 变量名与int之间有空格 • 必须以分号结尾 • 多个变量之间用逗号分隔 • 不对变量赋初值,变量仍然有值
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
有无 符号
有
最高位 含义
符号位
无 数值位
有 符号位
无 数值位
值域
-215~215-1 [-32768..32767]
0~216-1 [0..65535] -215~215-1 [-32768..32767] 0~216-1 [0..65535]
占内存大小 (字节)
2
2
2
2
long int long
有 符号位
一、C语言的基本数据类型
整型数据
实型数据
字符型数据
字符串数据
整型数据
常量的表示
值常量 符号常量
数据在内存中的存放形式
Βιβλιοθήκη Baidu
(1)10进制整数,比如:10,-23。
(2)8进制整数,以数字0开头。比 如,017实际上是(17)8。 (3)16进制整数,以0x或0X开头。 比如,0x18实际上是(18)16。