C语言课件 第2章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整形数据
整型常量的表示形式
可用八进制(数字0开头),十进制,和十六进 制(0x或者0X开头)表示。如果数据范围在32768~32767之间,认为是int类型;如果超 过此范围,认为是long类型; 长整型后添加l或者L,如1234567L; 无符号整形常量后跟u或者U; 无符号长整型后加LU,lu,LU,lU之一。
算术运算符和算术表达式
C运算符:C语言的运算符范围很广,把除了控制 运算符: 运算符 语句和输入输出以外几乎所有的操作都作为运算 符处理,如算术运算符(+ - * / %)、关系 运算符(> >= < <= == !=),逻 辑运算符(! && || ||)等共13类,详见P33 13 P33 C表达式:包含算术表达式(如 表达式: 表达式 2+6.7*3.5+sin(0.5)),关系表达式(如 x>0),逻辑表达式(如x>0 && x<3),赋值 表达式(如a=5.6),逗号表达式 (a=3,b=4,c=5;)。
常量: 常量:在程序运行过程中值不可改变 整形常量,例如1234,58等; 整形常量,例如 , 等 实型常量,例如3.14,-2.58等; 实型常量,例如 , 等 字符常量,例如'A', '5', '+'等; 字符常量,例如 等 宏常量(符号常量) 宏常量(符号常量),用一个符号名代表 一个常量,用define定义
6种整型变量的定义方法:(方括号表示可 以省掉不写) [signed] int/short[int]/long[int] 或者unsigned int/short[int]/long[int] 如果不知道具体编译系统对变量分配多少字 节的存储空间,可以用sizeof运算符,例如 printf("%d\n",sizeof(int));
第2章
数据类型、 数据类型、运算符与表达式
1. C语言的数据类型 数据类型分类意义 跟存储空间(占用的存储空间字节数不同, 例如char类型占1个字节,int占4个字节) 取值范围(取值类型及取值范围不同) 运算类型(可以进行的运算类型不同,例如 %运算符要求操作数为整型)
C语言数据类型
常量与变量
例2.1 #include<stdio.h> #define PRICE 30 /*此行和上面这行的顺序可以交换*/ void main() { int num,total; num=10; total=num*PRICE; printf("total=%d\n",total); }
运行结果为 total=300 Press any key to continue 在程序编译之前,会有一个编译预处理的过程,这 时编译系统会用30来代替PRICE,实质是文本替 换 使用字符常量好处: 使用字符常量好处: 含义清楚,例如用PI来表示3.14 需要修改字符常量值时,只需要修改一处就可以
算术表达式和运算符的优先级与结合性
用算术运算符和括号将操作数连接起来,、符合C 语法规则的式子,称为C算术表达式,例如 a*b/c-1.5+ 'a' C语言规定了运算符的优先级和结合性。先按优先 级进行运算,优先级相同的,再看结合性。算术 运算为左结合性,也就是从左往右进行计算。 例如表达式a-b*c,乘法优先级比减法优先级高, 先算乘法,再算减法。表达式a-b+c,b左右两侧 的运算符优先级相等,但表达式按照从左到右的 方向进行运算。 有的运算符(如++,--)是右结合性。详见附录 C。
字符型数据
字符常量 字符常量书写方式有几种方式: 字符常量书写方式有几种方式: 可用键盘输入的字符用一对单撇号括起来,如'a','*' ,'+'等 转义字符:\n(换行),\“(双撇号)等; \ddd,或者\xhh,ddd为1~3位八进制数值,hh为1~2位 16进制数值代表的字符,这种方法可以表示任意字符常量; 详细详表见P27,表2-2. 字符变量 字符变量占用一个字节的存储空间,可以存放一个字符,例如 char ch;ch= '为#define 宏名 替换文字,编译预处理会用 “替换文字”来代替“宏名”,注意宏名和替换文 字的先后顺序; “替换名字”可以带空格,例如 #define HELLO printf("hello"); printf("hello"); 不作语法检查,用双引号括起不进行替换,如 printf(“PI”);不进行替换; 宏定义不是可执行语句,不用分号结束,如果带分 后,连分号也作为“替换文字”的一部分 符号常量常用大写,以区别于变量
算术运算符
+(加法运算符,或者正值运算符) -(减法运算符,或者负值运算符) *(乘法) /(除法)如3/2的值为1,舍去小数部分。如果想 计算结果包含小数,则可以写成3.0/2或者3/2.0 或者3.0/2.0的形式。 %(模运算符或称求余运算符),如7%4的值为 3。%号两边应该为整数,结果符号与被除数相同, 例如7%-4的值为3,-7%4的值为-3。
整型数据在内存中的存放形式:用补码形式 整型数据在内存中的存放形式 表示,参看数字电路相关章节 整形数据的溢出: 整形数据的溢出:在编程时注意各种存储 变量存储数据的范围即可
浮点型数据
浮点型常量的表示形式
浮点型常量也就是实型常量,带有小数点的常数; 3 +3 -3 .3 3.都是合法实型常量; 可以写成指数形式,格式为 小数或整数 E(或e)整数 的形式,左边的有效数字不可省,指数必须为整数。如 3.0e6,-3.0e-6都是合法的。E3,1e0.3不合法。 实型常量的确定:实型常量隐含为double,要确定为单 精度float须添加f或者F;长双精度long double在数值 后添加L或者l,如1.25L。
例2.7大小写字母的转换
#include<stdio.h> void main() { char c1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; printf("%c %c\n",c1,c2); } 运行结果为: A B Press any key to continue
字符数据的存储形式及使用方法
字符变量存储实际上是一个字符的ascii码,例如字符'A' 的ascii码为65,那么ch= 'A';与ch= 65的作用是一样 的; 字符数据可以按字符的形式输出(%c),也可以按整 数形式输出;可以按整数或者字符形式赋值; 可以把字符变量当作整形变量,可以参加整形变量可以 参加的各种运算,例如算术运算。只是它只占用一个字 节,存储数据的范围是-128~127,如果定义为 unsigned char,存储数据的范围就是0~255; ASCII表中并不是所有的字符都能打印出来,有的只是 控制字符,是打印不出来的。另外范围是ASCII码范围 是128~255的字符,由于字节里最高位是1,跟汉字的 存储方式有冲突,所以不一定能在显示器上显示出来。
浮点型变量
3种浮点型变量:float,double,long double 其中float占用4字节,范围是10-38~1038,有效 位数为7位(注意不是指小数位数);double占 用8字节,范围是10-308~10308,有效位数为 15~16位;不同的编译系统对long double类型 有不同的处理方式,如果按16字节存储,范围是 10-4932~104932,有效位数为18~19位。 浮点数提供的有效数字是有限的,精度也是有限 的,超过该变量能表示的精度范围,将会产生误 差
字符串常量
字符串常量是用一对双撇号括起来的字符序列(可以含有 空格),例如"%d%c", "hello"。 注意字符常量'A'和字符串常量"A"是不同的,不可把字符 串常量赋给字符变量,C语言没有字符串变量,可以用数组 来存储字符串。 编译系统自动在字符串后添加字符串结束标志'\0',如字符 串"hello"在内存中的存储方式是
h
e
l
l
o
\0
各类数值型数据间的混合运算
字符型、整型 (int,short,long)与 浮点型 (float,double,long double)数值之间可 以进行混合运算。在 运算时候,不同类型 的数据会被系统自动 转换成同一类型,精 度等级会提高。转换 规律如下:
double long unsigned int
运算结果为整个算式里等级最高的那一种类型。
例如i为int类型,f为float类型,d为double类型,e为long类型, 有以下算式 10+'a'+i*f-d/e 按照运算优先级, 先算10+'a',则'a'被提升为int类型,运算结果107,为int类型; 再算i*f,f必定会被提升为double类型,那么i也会被提升为 double类型; 第1步得到的结果107为int类型,被提升为double类型,跟第2步 结果运算,结果是double类型; e被提升为double,再计算d/e,运算结果为double; 第3步跟第4步结果相减,结果为double类型。
例2.6向字符变量赋予整数
例2.6向字符变量赋予整数 #include<stdio.h> void main() { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); } 运行结果是 a b 97 98 Press any key to continue
变量: 变量:在程序运行过程中值可以改变 变量的名字必须符合标识符的命名规定, 语言有 变量的名字必须符合标识符的命名规定,C语言有 3种类型的标识符 种类型的标识符 关键字: 关键字:已被固定为特定意义,不可用作标识符, 例如int,float,long等 系统预定义的标识符: 系统预定义的标识符:包括系统提供的库函数名, 例如scanf,printf等,以及编译预处理命令 define等,建议不要用作变量名,否则容易引起 混乱; 用户标识符: 用户标识符:除此之外的,以字母或者下划线开 头,以字母、数字、下划线构成的字符串,可用 作变量、函数、符号常量、数组、结构体等名字
float
char,short
横向方向表示必定的转换,即使是两个char类型的 变量,也会转换成int类型; 纵向方向表示类型不同则转换,如一个int类型, 一个long类型,就把int类型提升成long类型, int,unsigned,long,double只表示转换的方 向,不表示转换依次进行。例如int类型与double 进行运算,就会把int一次性提升到double类型, 而不需要经过unsigned和long的中间步骤。
整型变量
整型变量可以存放整数, 整型变量可以存放整数,有三种类型 基本整形,用int定义,例如int a; 短整型,用short int或者short定义; 长整型,用long int或long定义
整形变量的长度及存储数据的范围
对于turbo系统,shor及int类型长度为2字节,范围为32768~32767;long类型长度为4字节,范围为-215~2151(约±21亿) 对于VC++6.0系统,shor类型长度为2字节,范围为32768~32767;int及long类型长度为4字节,范围为-215~ 215-1(约±21亿) 如果在int或者short int、long int前面加上unsigned修饰符, 表示无符号数,表示正数的范围扩大一倍(不能存储负数), 例如unsigned in范围为0~65535 如果在int或者short int、long int前面加上signed修饰符, 表示有符号数,此时signed符号可以省略,也就是signed int 与int等价;
标识符
合法的标识符: 合法的标识符:sum, average,_total,Student_name,_123等 等 不合法的标识符: 不合法的标识符:M.John, $123, #22, 1234,a>b等 等
注意: 注意:
标识符区分大小写,例如Sum和sum是两个不同 的标识符,变量一般采用小写,一般取名要做到 “见名知意”,例如sum,average,total等; 不同的编译系统对变量名的长度有不同的规定; 变量必须先定义后使用,例如int a;定义了一个 整形的变量,名字为a