程序设计与C语言 第二版 教学课件 作者 马鸣远 第1-5章第3章.pptVIP

程序设计与C语言 第二版 教学课件 作者 马鸣远 第1-5章第3章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
之所以要采用符号扩展的原则,是为了保证在以十进制整数格式%d输出i和c时,它们都具有相同的值-2。   (5) [char]←(int, short int, long int):只把整数的低 8 位送到字符变量中,其余全部截掉,当整数大于 255(低 8 位的最大值)时,赋值在变量中会改变原来的值,如: int i=256; char c; c=i; printf(″i=%d, c=%d \n″, i, c);   则输出为 i=256, c=0   内存表示为   (6) [long]←(int):把int类型数值送入long类型的低 16 位中,高 16 位按“符号扩展”的原则处理。 [int]←(long):把long的低 16 位送入int型变量,高 16 位截掉,如高 16 位中仍有数据,则赋值在变量中有可能改变原来的值。   (7) [int]←(unsigned int)、[long]←(unsigned long)及 [short]←(unsigned short):这类赋值的特点是两边的长度相等,但取值范围不同,右边的正数范围要比左边大一倍, 因此只有在左边的正数范围内赋值才正确,否则所赋的正值在变量中会得到负的结果。例如: int b; unsigned int a=65535; b=a; printf(″a=%u, b=%d \n″, a, b); 结果为 a=65535, b=-1 内存表示为   (8) [unsigned in]←(int)、[unsigned long]←(long)及[unsigned short]←(short):这是和(7)相反的赋值,可以照原值全部传送,但若传送负数,则接收者会得到一个正数的结果,其原因在于把原来的符号位也当成了数值位。例如: unsigned int a; int b=-1; a=b; printf(″b=%d, a=%u \n″, b, a); 则输出为 b=-1, a=65535   使用自加、自减运算符应注意以下几点:   (1) 最常见的错误是把自加、自减运算符用在非简单整型变量的表达式上,如++(x+2)、++(-i)等都是错误的。   (2) 自加自减运算符的结合性为:前置时是自右向左的,后置时是自左向右的。比如p=-x++等价于p=-(x++)。这个表达式的意思是先用x变量的当前值加负号赋给p,而后x再加 1。该表达式并不等价于p=(-x)++,因为这样就使++作用在表达式-x上了,这是(1)中指出的错误。   (3) 如果两个运算对象之间连续出现多个运算符,则C语言采用“最长匹配”原则,即在保证有意义的前提下,从左到右尽可能多地将字符组成一个运算符。因此i+++j就被解释成(i++)+j而不是i+(++j)。同样,i++++j被解释成(i++)++j;i+++++j被解释成((i++)++)+j。而这两种情况都是错误的。正确的写法应该是在连续的运算符中间的适当地方增加空格分隔符或加括号,使分开的部分成为有意义的运算对象。比如应把i+++++j写成i++ + ++j或(i++)+(++j)。   (4) 对所有简单类型的变量都可以进行自加、自减运算。   【例 3-13】 自加运算。 #include stdio.h main() { int p, x=3; char c=′a′; float f=3.2; p=-x+++1; printf(″p=%d, x=%d \n″, p, x); printf(″c=%c \n″, ++c); printf(″f=%f\n″, ++f); return 0; }   运行输出: p=-2, x=4 c=b f=4.200000   (5) ANSI C并没有规定所有运算符操作数的计算顺序。例如对于语句:i=m*n+p*q;,根据运算符的优先级和结合性可知,它等同于i=(m*n)+(p*q);,但对于m*n和p*q谁先进行计算,C并未明确规定,不同的编译系统都有不同的规定。因此在一个语句中如果要对一个变量前后使用多次,而且前后值不同,则应避免使用自增、自减运算符。比如: i=1; m=++i*(i+1); 对于这个表达式,编译系统可能:① 先计算++i,再计算i+1;② 先计算i+1,后计算++i。对于①,结果是m=2*(2+1)=6;而对于②,结果是m=2*(1+1)=4。为避免产生这种二义性,应当把它们分成两个表达式,明晰地表达程序员的意图。如果

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档