- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言疑惑的经验谈
C语言疑惑的经验谈
摘 要:初学者在学习C语言过程中,会遇到很多疑难问题。经过多年C语言的教学工作,对C语言中常见的疑难问题给予归纳解答。??
关键词:C语言,运算符,表达式,函数??
中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2011)03-0080-02?お?
??
作者简介:雷萌(1981-),女,陕西泾阳人,西藏民族学院讲师,研究方向为计算机软件与理论;赵亚妮(1976-),女,陕西咸阳人,硕士,西藏民族学院讲师,研究方向为智能控制以及电子技术应用教学。
0 引言??
C语言是一门基础的计算机程序设计语言,它兼具汇编语言和高级语言的双重优点,运用它既能编写操作系统软件,又能开发各个领域的应用软件。正因为C非常实用,现在很多高校都把C语言作为计算机专业及非计算机专业的必修课。学好C语言,对日后理解C????++ ??/Vc????++?? 、java等语言,都会有很大的帮助。但是,C语言语法很灵活,这就使得初学者在学习C语言时,会碰上很多疑难问题,有人甚至会因为这些问题渐渐丧失学习C语言的信心。笔者根据几年的C语言教学研究,对C语言常见的问题进行了归纳。??
1 逻辑运算符,||“短路问题”??
逻辑运算符是C语言里一类经常使用的运算符,选择结构中if语句的条件表达式、循环结构中的循环表达式都和逻辑运算符相关。那么在使用逻辑运算符的时候,学生经常忽略了逻辑运算符的“短路问题”。??
“短路”的含义是:在逻辑表达式的求解过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算。??
请看下面的代码:??
#include ??
void main()??
{??
int x,y;??
x || ++y;printf(%d,%dn,x,y);??
x=y=0;??
x || ++y;printf(%d,%dn,x,y);??
x=y=1;??
x ++y;printf(%d,%dn,x,y);??
x=y=0;??
x ++y;printf(%d,%dn,x,y);??
} ??
程序的运行结果是:1,1??
0,1??
1,2??
0,0??
我们来分析程序的执行过程:主函数中语句x=y=1;x || ++y;的执行过程是先给x,y两个变量赋值为1(在C语言中1即为逻辑真),再判断变量x的值是逻辑真还是逻辑假,若为逻辑假,继续向后执行,若为逻辑真,则得到整个逻辑表达式的值为真,故语句++y并没有得到执行,y的值也没有改变。同理,主函数中语句x=y=0;x ++y;的执行过程是先给x,y两个变量赋值为0(在C语言中0即为逻辑假),再判断x的值是逻辑真还是逻辑假,若为逻辑真,继续向后执行,若为逻辑假,则得到整个逻辑表达式的值为假,故语句++y并没有得到执行,y的值也没有改变。??
2 C语言不同编译环境下对表达式求值的差异??
前些年大家用来编译C语言程序的系统大多是turbo c家族的成员,但是近几年,大家慢慢习惯了用不同版本的vc????++??来编译C语言程序,而我们学生的教科书又大多是以turbo c为编译环境的,在不同的编译环境下,C语言程序的运行结果可能会有很大差异,我们来看输出语句:printf(%d,%d,%d,%d,++x,--x,-x++,x);。??
该输出语句中包含两点问题:1.++,--这两种自增自减运算符在使用的时候如果运算符在变量之后,则是先使用再加1(或减1),如本例中表达式-x―的运算顺序是先取负,再传递值,最后加1;2.在VC++6.0中编译C程序,格式输出函数printf的输出表列部分在输出时对表达式的计算是自右向左执行的。故本例在VC++6.0环境下的输出结果是10,9,-10,10。而在turbo c的一系列版本中,格式输出函数printf的输出表列部分在输出时对表达式的计算是自左向右执行的,故本例在turbo c环境下的输出结果是11,10,-10,10??
3 字符和字符串的定界符不同含义(见c陷阱与缺陷)
C语言中,单引号与双引号的含义差别很大,在使用过程中如果把两者混淆,编译系统不会报错,这样一来,程序会产生难以预料的结果。??
单引号引起来的字符实际上代表一个整数,该整数即是这个字符??
所对应的ASCII值,即‘a’的含义与97或者 0141(八进制)含义完全相同。??
双引号引起来的字符实际上代表一个指向无名数组起始字符的指针该数组被位于双引号
您可能关注的文档
最近下载
- 参考学习资料 建筑环境 贵州省建设工程造价信息2022年第02期.pdf VIP
- 2025年浙江省大学英语三级考试真题 .pdf VIP
- 小学教育专业职业生涯规划书.pptx
- 市政工程单位分部分项工程划分方案11.doc VIP
- 遗传学英文课件:11 群体遗传学英文课件.ppt VIP
- 质量保证措施通用版.docx VIP
- 第四单元《光现象》单元检测题八年级物理上册(人教版2024)(解析版).docx VIP
- 简谱D 想着我Think of Me简谱歌剧魅影.pdf VIP
- (高清版)B-T 40788-2021 船舶与海上技术 海上风能 港口与海上作业.pdf VIP
- 自动化专业职业生涯人物访谈报告.docx VIP
原创力文档


文档评论(0)