资源预览内容
第1页 / 共79页
第2页 / 共79页
第3页 / 共79页
第4页 / 共79页
第5页 / 共79页
第6页 / 共79页
第7页 / 共79页
第8页 / 共79页
第9页 / 共79页
第10页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 数据类型、运算符和表达式,2.1 数据类型 2.2 常量和变量 2.3 运算符和表达式 2.4 位运算 2.5 运算符的优先级 2.6 格式化输入输出函数的进一步讨论 2.7 常见问题分析,2.1 数据类型,在C语言中,数据类型可分为 :,一个字节有多大? 可以表示数字0255 保存一个字符(英文字母、数字、符号),ASCII编码 两个字节保存一个汉字 GB2312,6763字 GB13000.1,20902字 GB18030,27533字 BIG5,13000字 两个字节保存一个宽字符,UNICODE编码,基本数据类型(Data Type),int 整数,在目前绝大多数机器上占4个字节 BC31中是2个字节 所占字节数取决于机器字长 float 单精度浮点数,一般是4个字节长 double 双精度浮点数,一般是8个字节长 char 字符,一般是1个字节长 用来表示256个ASCII字符,或者0255的整数,数据类型修饰符,short short int,短整数,一般2个字节长。通常简写为short long long int,长整数,一般是4个字节长。通常简写为long long double,高精度浮点数,一般是10个字节长。 signed 用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略 unsigned 用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),超出取值范围会怎样?,BC31中int的范围是-3276832767 如果我们给它一个小于-32768或者大于32767的数会如何呢? 现场编程测验,小蛇能吞下大象吗?,溢出(Overflow)造成的危害,一台安装了Windows 95/98的机器,如果连续运 行49.7天没有重新启动,可能死机 原因: Windows自启动时刻起,有一个计数器,记录系统已 经运行了多少毫秒。这个计数器是个unsigned long 类型的变量 unsigned long的最大值是:4294967295 一天有 24*60*60*1000 = 86400000毫秒 4294967295 / 86400000 = 49.71026961805 当49.7天的时候,此计数器会溢出,引起死机,浮点数的陷阱,#include main() float f;f = 123.456;if (f = 123.456)printf(“f is equal to 123.456 indeed.“);elseprintf(“In fact, f is equal to %fn“, f); 运行结果会是什么?,float.c,浮点数的陷阱,float的精度低,较易发生精度带来的相等性判 断问题 double精度高,这个问题发生的概率小一些, 但也存在 解决办法: if (fabs(f 123.456) ,=, ch2);printf(“%c = %c-%dn“,ch1,ch2,ch1 = ch2);printf(“%c != %c-%dn“,ch1,ch2,ch1 != ch2); 运行结果为: a = b-0 a b-0 a = b-0 a != b-1,= 和 =,int a; a = 0; a = 1;,int a; a = 0; a = 1;,一定要分清=和= 下面用法能起点小作用:,int a=0; if (0 = a) printf(“OK“);,int a=0; if (0 = a) printf(“OK“);,编译出错,逻辑运算符,逻辑运算也被称为布尔(Boolean)运算,运算结果也是1和0 & 与运算 ( a b & b c);a大于b,并且b大于c | 或运算 ( a b | b c); a大于b,或者b大于c ! 求反 ( !a );如果a是0,结果非0;如果a是非0,结果是0 并不改变a的值,例2.6 逻辑运算符 运行结果为: a = 10 , b = 20 , c = 0 , max = 20,加一和减一运算符,自增、自减运算符分别为:+(自增)- (自减) +和-分别都有两种不同的形式:前置式: +i、-i后置式: i+、i-,前置运算是变量先自增1或自减1后,再参与其他的 运算,即先变后用; 例如:x = 0 ; y = - x + x; 结果为x=-1,y=-2 后置运算是该变量先以原来的值参加其它运算, 然后再自增1或自减1,即先用后变; 例如:x = 10 ; y = x+ + x; 结果为x = 11 , y =20;自增自减运算符只能作用于变量,不能用于常量 和表达式。,1. 基本赋值运算 基本赋值运算符“=”是一个双目运算符,它的一般表达式形式为:左值表达式 = 右值表达式 例如: int i,j char m,n float x,y double z j = i i和j的类型相同,无需转换,直接将i的值赋给j i = m m由char型向int型转换,将转换后的值赋给i z = x * i x * i的结果为float型,将其转换成double型,然后赋值给z i = m n m n的结果为整型,无需转换,直接将值赋给i i = j = 10 这是一个多重赋值表达式,赋值运算符按从右至左结合,即相 当于i=(j=10),先将10赋给j,而括号中的赋值表达式(j=10)的值就是赋值后的j的值,再将其赋给i,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号