《C语言--基本数据类型和表达式》由会员分享,可在线阅读,更多相关《C语言--基本数据类型和表达式(47页珍藏版)》请在金锄头文库上搜索。
1、第二章l 本章要点n n数据的描述规则数据的描述规则n n数据的操作规则数据的操作规则主要内容 2.1 C的数据类型 2.2 常量与变量 2.3 整型数据 2.4 浮点型数据运行 2.5 字符型数据l 主要内容 2.变量赋初值 2.7 各类数值型数据间的混合运算 2.8 算术运算符和算术表达式 2.9 赋值运算符和赋值表达式 2.10 逗号运算符和逗号表达式 2.1 C语言的数据类型程序=数据结构+算法 (1)数据结构:对数据的描述,数据的类型 和数据的组织形式。 数据是操作的对象。 (2)算法:对操作的描述,操作步骤,“做 什么”和“怎么做”。 数据类型决定数据被存储时所占内存大小、 存储形
2、式、数据取值范围及其可进行的操 作。 2.1 C语言的数据类型C语言提供了以下一些数据类型。 数据类型数据类型构造类型构造类型指针类型指针类型空类型(空类型(无值类型)无值类型) voidvoid枚举类型枚举类型 enumenum数组类型数组类型结构体类型结构体类型 structstruct共用体类型共用体类型 unionunion基本类型基本类型整型整型 intint字符型字符型 charchar实型(浮点型)实型(浮点型)单精度实型单精度实型floatfloat双精度实型双精度实型doubledouble2.2 常量与变量 2.2.1 常量和符号常量 常量:在程序运行过程中,其值不能被改变
3、的 量。 常量可分为: 直接常量 123,056,0x78,a, “ab” , 3.1415926 符号常量 #define 常量名 字符串 1.常量名大写 2.优点:含义清楚,一改全改 例2.1 符号常量的使用 #define PRICE 30 #include void main ( )int num, total;num=10;total=num * PRICE;printf(total=%dn,total);说明:说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算说明:说明:用一个标识符代表一个常量的,称为
4、符号常量,即以标识符形式 出现的常量。符号常量的值在其作用域(在本例中为主函数)内不能 改变,也不能再被赋值。 说明:说明:如再用赋值语句给PRICE赋值是错误的。 PRICE=40; /* 错误,不能给符号常量赋值。 运行结果: total=3002.2 常量与变量 2.2.2 变量标识符(变量名、数组名、符号常量名、函数名等) 命名规则:1由字母、数字、_ 组成,首字符不能是数字 ; 例:sum,_total, month, Student_name,lotus_1_2_,BASIC, li_ling M.D.John, ¥123,3D64,ab 2.2 常量与变量 命名规则:2区分大小写
5、,一般用小写;3长度不限,但只有前8个字符有效 ;4有意义的英文单词或缩写;2.2 常量与变量5所有变量使用之前必须声明。 变量数据类型 变量名; 如:int a; char a,b,c; float a=1.2,b; float a,b; a=1.2;变量定义的必要性:1.写错变量名时报错; 2.按照指定的数据类型分配内存空间,检查 运算是否合法。2.3 整型数据在语言中,整数可用以下三种形式表示: (1)十进制整数。如:123, -456。 (2)八进制整数。以0开头的数是八进制数。如:0123表示八进制数123,等于十进制数83。 (-11)8表示八进制数-11,即十进制数-9。 (3)
6、十六进制整数。以0x开头的数是16进制数。如:0x123,代表16进制数123,等于十进制数 291 。 (-AE)162.3 整型数据整型数据在内存中是以二进制形式存放的。如: int i; /* 定义为整型变量 */i=10; /* 给i赋以整数10 */ 数值是以补码(complement) 表示的。i100 0 0 0 0 0 0 0 0 0 0 0 1 0 1 001 1 1 1 1 1 1 1 1 1 1 1 0 1 0 11-101 1 1 1 1 1 1 1 1 1 1 1 0 1 1 012.3 整型数据 原码:最高位为符号位,其余各位为数值 本身的绝对值。 反码:正数的反码
7、与原码相同。负数的反 码符号位为1,其余位对原码取反。 补码:正数的原码、反码和补码相同。负 数的补码最高位为1,其余位为对原码取反 ,再加1。 2.3 整型数据 (2)整型变量的分类:共六种有符号基本整型 有符号短整型 有符号长整型 无符号基本整型 无符号短整型 无符号长整型(signed)int (signed)short (int ) (signed) long (int) unsigned int unsigned short (int) unsigned long (int)注意:括号表示其中的内容是可选的.2.3 整型数据 整数类型的有关数据:类型类型 类型说明符类型说明符 长度长
8、度 数的范围数的范围基本型基本型 signed signed intint 4 4字节字节 -2-231312 23131-1 -1 无符号整型无符号整型 Unsigned Unsigned intint 4 4字节字节 0 0 (2 23232-1-1)短整型短整型 signed signed short short intint 2 2字节字节 -2-215152 21515-1 -1 无符号短整型无符号短整型 unsigned short unsigned short intint 2 2字节字节 0 06553565535长整型长整型 long long intint 4 4字节字节
9、-2-231312 23131-1-1无符号长整型无符号长整型 unsigned long unsigned long intint 4 4字节字节 0 0(2 23232-1-1)例2.2 整型变量的定义与使用 #include void main()int a,b,c,d; /* 指定、为整 型变量 *unsigned ; * 指定为无符号整型变量 *12;-24;10;printf(, ,);说明:说明: 可以看到不同种类的整型数据可以进行算术运算 运行结果: , 例2.3 整型数据的溢出 #include void main() int a,b; a=32767;b=a+1;print
10、f(“%d,%dn”,a,b); 说明:说明:数值是以补码表示的。一个整型变量只能容纳-3276832767范 围内的数,无法表示大于32767或小于-32768的数。遇此情况就发 生“溢出”。运行结果: 32767,-327682.4 浮点型数据两种表 示形式小数指数0.123,123.456,123.0,0.0 123e-3,12.3456e1 注意: e前必须有数字,后必须是整数。 e3e3、2.1e3.52.1e3.5、.e3.e3、e e 123.456可以表示为:123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.
11、00123456e 规范化的指数形式(小数点左边必须且只能有一 位非零数字)1.23456e22.4 浮点型数据浮点型数据在内存中按照指数形式存储,指数部分 采用规范化的指数形式。+.3141591数符小数部分指数l数符、小数部分、整数部分都是用二进制形式表 示的。l小数部分位数越多越精确,指数部分位数越多数 值范围越大。 2.4 浮点型数据浮点型数据分为单精度(float型)、双精度( double型)和长双精度型(long double)三类形 式。类型类型 位数位数 数的范围数的范围 有效数字有效数字float float 32 32 -3.410 -3.410-38 -38 3.410
12、3.41038 38 6 6 7 7 位位doubledouble型型 6464 -1.710 -1.710-308-308 1.7101.710308308 1515 1616位位long double 128 -1.210long double 128 -1.210-4932-4932 1.2101.2104932 4932 1818 1919位位例2.4 浮点型数据的舍入误差 #include void main() float a,b;a = 123456.789e5;b = a + 20 ;printf(“%fn”,b); 说明:说明:一个浮点型变量只能保证的有效数字是7位有效数字,
13、后面的数字是无意 义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接 相加或相减,否则就会“丢失”小的数运行结果: 123456.789e52.5字符型数据 (1)用单引号包含 (2)只能包含一个字符 a,A, 1 abc、“a”2.5字符型数据以“”开头的特殊字符称为转义字符,赋以后面的字符新含 义。 n 换行,将当前位置移到下一行开头 t 水平制表(跳到下一个Tab位置) b 退格,将当前位置移到前一列 r 回车,将当前位置移到本行开头 f 换页,将当前位置移到下页开头 代表一个反斜杠字符“” 代表一个单引号(撇号)字符 ” 代表一个双引号字符 ddd 1到3位八进制数所代表的字符 xhh 1到2位十六进制数所代表的字符例2.5 转义字符的使用 #include void main() printf( ab ct derftgn);printf(htibbj kn); 打印机上的显示结果:fab c gdeh jik显示屏上的运行结果:f gde j k2.5字符型数据 字符数据在内存中的存储形