高级语言程序设计 第三章数据类型、运算符与表达式
高级语言程序设计 第三章 数据类型、运算符与表达式
Example Let's try... main() printf( char%字节n”, sizeof(char) printf( float:%d字节n”, sizeof((oat); 结果显示:char:1字节 foat:4字节 实 求某一类型数据所占存储字节数,可用运算符: sizeof(类型关键字)
一、C语言的数据类型 3.1 C语言的数据类型 P38 • 基本类型 字符型(char) 1字节 整型—短整型(short int ) 2字节 基本型(int) 2字节(-32768~32767) 长整型(long int ) 4字节(±21亿) 实型—单精度(float) 4字节 6~7位有效数字 长单精度(long float) 8字节 15~16位有效数字 双精度(double) 8字节 15~16位有效数字 长双精度(long double)10字节 20位有效数字 可知对不同数据类型占用的存储空间: char<short<=int<long <=float<double 求某一类型数据所占存储字节数,可用运算符: sizeof(类型关键字) Example: main( ) { printf(“char:%d字节\n”,sizeof(char)); printf(“float:%d字节\n”,sizeof(float)); } 结果显示: char:1字节 float:4字节 Let’s try…
3.2常量与变量 3.2.1常量和符号常量 常量:在程序运行中,其值不能改变的量 常量的类型 整型常量:如12,0 实型常量:如2.3,-126 字符常量:如‘a',“b,←c 字符串常量:如“abc”,“ Pam a teacher! 符号常量:用一个标识符代表一个常量
3.2 常量与变量 3.2.1常量和符号常量 常量:在程序运行中,其值不能改变的量 常量的类型: 整型常量: 如 12 , 0 , -4 实型常量: 如 2.3 , -12.6 字符常量: 如 ‘a’ , ‘b’ , ‘c’ 字符串常量: 如 “abc” , “I’am a teacher!” 符号常量: 用一个标识符代表一个常量
3.2.2变量P39 1.标识符P40 2.c语言规则标识符只能由字母数字和下划线组成 且第一个字母必须是字母或下划线 3.标识符的长度:小于等于32个字符 4.变量必须先定义后使用 5.变量名必须符合标识符命名规则 6.inta,b;a%b;(%表示求余%必须要求两个数都 为整数) 7.变量的类型整形变量实型变量,字符变量(C语言 中无字符串变量)
3.2.2 变量 P39 1. 标识符 P40 2. C语言规则:标识符只能由字母,数字和下划线组成, 且第一个字母必须是字母或下划线. 3. 标识符的长度:小于等于32个字符 4. 变量必须先定义后使用 5. 变量名必须符合标识符命名规则 6. int a,b; a%b; (%表示求余,%必须要求两个数都 为整数) 7. 变量的类型:整形变量,实型变量,字符变量(C语言 中无字符串变量)
33整型数据P41 3.3.1.整型常量的表示方法 十进制整数12700000 八进制整数以数字0开头的数012012 十六进制整数以0X开头的数0x120X12 3.3.2整型变量 1.数据在内存中是以二进制的形式存放的 例如:10的二进制形式为1010,因为整型变量在内存中 占两个字节所以10在内存中的存储情况为 0000000000001010
十进制整数 12 700000 八进制整数 以数字0开头的数 012 -012 十六进制整数 以0x开头的数 0x12 -0x12 3.3.2 整型变量 1.数据在内存中是以二进制的形式存放的. 例如:10的二进制形式为1010,因为整型变量在内存中 占两个字节.所以10在内存中的存储情况为 3.3 整型数据P41 3.3.1.整型常量的表示方法 00000000 00001010
注意享项 数据存储形式 字符型按 ASCI码存储,其余以补码存储 示意图 字符型01100001(字符a) 用一个字节存放该字符的ASC值(ASC值表见P374) 整型0110000111001101(+进制数25037) 用两个字节存放该数值的补码 注:第一位均为符号位
注意事项 • 数据存储形式 字符型按ASCII码存储,其余以补码存储 示意图 字符型 (字符'a') 用一个字节存放该字符的ASCII值(ASCII值表见P374) 整 型 (十进制数25037) 用两个字节存放该数值的补码 注:第一位均为符号位 01100001 01100001 11001101
对于inta=8b=8; 符号位: 0—正数1—负数 符号位 数值位 真值 a=810=10002 b=-810=-10002 原码0000000000100000001000 补码000000000111111190 正数的原码=正数的补码 负数的原码和补码按以下规则相互转换: 符号位不变,数值位各位取反,末位加1。 2.整型变量的分类P42
• 对于 int a=8,b=-8; 0 0000000 00001000 符号位: 0—正数 1—负数 1 0000000 00001000 1 1111111 11110111 正数的原码=正数的补码 负数的原码和补码按以下规则相互转换: 符号位不变,数值位各位取反,末位加1。 0 0000000 00001000 原码 补码 符号位 数值位 真值 a=810=10002 b=- 810=-10002 1 1111111 11111000 2.整型变量的分类 P42
3整型数据的溢出 整型≠整数 int的范围:-32768~+32767 Example: 运行结果: include include nput:12345 a=12345 Why maino nput:1234567 ? int a j a=-10617 Because:12345的补码是 0011000000111001 1234567的补码是100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617) 参见教材P44整型数据的溢出
3.整型数据的溢出 • 整型≠整数 int 的范围: - 32768~+32767 Example: #include #include main() { int a ; printf(“Input :”); scanf(“%d”,&a); printf(“a=%d\n”,a); } 运行结果: Input:12345 a=12345 Input:1234567 a= -10617 Why ?! Because: 12345的补码是 0011000000111001 1234567的补码是 100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617) 参见教材P44“整型数据的溢出
34实型数据 341实型常量的表示方法P45 1.实数又称浮点数有两种表示形式 十进制小数形式它由数字和小数点组成12345 200.0(必有小数点) 指数形式12603(126E3)123e-4(123E4) 注意:字母eE之前必须有数字,且e后面的必须为整数 找错:e3,2103.5 2一个实数可以有多种指数的表示形式例如 123e0,123e1,123e20.12303 把其中123e2称为“规范化的指数形式”,即在字母e/E之前的 数部分中小数点左边应有一位(且只能有一位非零数字 实型常量本身无单或双精度
3.4 实型数据 •3.4.1实型常量的表示方法 P45 1. 实数又称浮点数,有两种表示形式 十进制小数形式 它由数字和小数点组成 123.45 2.0 0.0 ( 必有小数点) 指数形式 1.26e3 (1.26E3) 123e-4(123E-4) 注意:字母e/E之前必须有数字,且e/E后面的必须为整数 找错: e3 , 2.1e3.5 2.一个实数可以有多种指数的表示形式.例如 123e0,12.3e1,1.23e2,0.123e3 把其中1.23e2称为“规范化的指数形式”,即在字母e/E之前的 小数部分中,小数点左边应有一位(且只能有一位)非零数字. 实型常量本身无单或双精度
342实型变量P46 1实型数据在内存中的存放形式 2实型变量的分类 单精度(floa)型67位有效数字 双精度( double)型15-16位有效数字 长双精度 long double)型
3.4.2 实型变量P46 1.实型数据在内存中的存放形式 2.实型变量的分类 • 单精度(float)型 6~7位有效数字 • 双精度(double)型 15~16位有效数字 • 长双精度(long double)型