- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 主要内容 3.1 C的数据类型 3.2 常量与变量 3.3 整型数据 3.4 浮点型数据运行 3.5 字符型数据 二进制、八进制、十六进制转换成十进制 方法:按权相加 字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1 3.1 C的数据类型 后置++(或――)的计算一直延迟到出现下面情况时,操作数才增(或减1): 逻辑与运算符 逻辑或运算符 || 条件运算符 ?: 逗号运算符 , 一个完整的表达式(包括以语句形式出现的表达式,选择语句中的选择表达式,循环语句中的控制表达式,return语句中表达式) 示例:设 int x=0 , y=1; x+++x++ 结果为0。整个表达式执行完后x值为2。即若 z=x+++x++ 则z的值为0,x的值为2。 Y-x++x 结果为1,因为y-x++结果为1,后面的x值为1因而整个表达式的值为1 z=x*y--|| y 结果z的值为0,因为||后的y值为0,因而整个表达式的值为0,z的值为0。 可以上机测试:“++”、“--”运算的延迟情况。 #include “stdio.h” void main() { int x=0,y=1; printf(“x=%d,y=%d\n”,x,y); printf(“x++=%d\n”,x++); printf(“y--=%d\n”,y--); printf(“x=%d,y=%d\n”,x,y); } 输出应为:x=0,y=1 x++=0 y--=1 x=1,y=0 ++和--是带有副作用的运算符。不要在一个表达式中对同一变量多次使用这样的运算符。 如i =4,可能认为表达式(i++)+(i++) 的值为9(4+5)。然而在有些C系统中, 它的值为8,而表达式(++i)+(++i)的值为12。因为这些系统: 在处理i++ 时,先使用i 的原值计算整个表达式,然后再让i 连续两次自增 处理++i 时,在计算表达式值之前,先对i 执行两次自增,然后才计算表达式 函数调用中,多个实参表达式的求值顺序,因为从左到右与从右到左的不同,会产生不同的结果。 例:设i为4,对于函数调用??printf(“%d %d\n”, i, i++): 如果参数表的求值顺序从左到右,则输出 4 4,反之,将输出 5 4。 因为+ 与++ ( -与--类似) 是两个不同的运算符,对于类似表达式i+++j会有不同的理解: (i++) + j 或i + (++j) C编译的处理方法是自左至右让尽可能多的字符组成一个合法的句法单位(如标识符、数字、运算符等)。因此,i+++j被解释成: ??(i++) + j, 不是i + (++j) 字符型数据赋给整型变量时,有两种情况: 如果所用系统将字符处理为无符号的量或对unsigned char型变量赋值,则将字符的8位放到整型变量低8位,高8位补零(图a) 如果所用系统(如TC)将字符处理为带符号的(即signed char),若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1(图b)。这称为“符号扩展”,这样做的目的是使数值保持不变 将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char型变量(即截断) int i=289 - 字符型c 将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中,如果int型数据为正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不改变 反之,若将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到整型变量(即截断) 8l - (int) 8 将unsigned int型数据赋给long int型变量时,不存在符号扩展问题,只需将高位补0即可 将一个unsigned类型数据赋给一个占字节数相同的整型变量,将unsigned型变量的内容原样送到非unsigned型变量中,但如果数据范围超过相应整型的范围,则会出现数据错误 unsigned int a=65535; int b; b=a; 结果是:b=-1 将非unsigned型数据赋给长度相
文档评论(0)