资源描述:
《C语言中常见符号问题探析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言中常见符号问题探析摘要:c语言是应用最广的高级程序设计语言,其语法灵活,使用便捷。文章在TurboC环境下,提出儿种常见的编译系统纠错无法判断的问题,分析了几种运算符、语句结朿符和ELSE等,并通过案例来比较分析程序运行结果,为广大C语言程序学习者提供一些参考。关键词:C语言;运算符;表达式;判断条件C语言既有高级语言的特点,又有汇编语言的特点,因此它是应用最广的高级程序设计语言。用它不但能编写操作系统软件,也能开发各个领域的应用软件。目前在我国,众多的本科和高职院校的理工科专业都把c语言作为一门必修课程。c语言可读性强、
2、容易维护、移植性好[1],它具冇丰富的运算符与数据类型,也正因为这些,在学习C语言的过程屮会出现很多困难和问题。1运算符与表达式运算符是表示某种操作的符号,在c语言中运算符主要有:赋值运算符、算术运算符、逻辑运算符等。运算符的操作対象称为运算数,表达式是用运算符把运算数连接起来的式了[1]。只是认识运算符并不难,可是一旦将运算符与运算数结合成表达式时就很容易出现知识混淆产生问题而不知该如何入手解决。1.1赋值运算符“二”和关系运算符“二二”赋值运算符“二”在平常生活与基础学习中就是“等于”的意思,但是在C语言中却不能理解为普通的
3、“等于”的意思,应理解为“赋予”或“给予”的意思,而作为判断平等的“等于”在C语言中用关系运算符“二二”来表示。因为习惯性使然,在编程时经常会出现误写“二”作为判断的“等于”,这样就使得所要完成的功能语句出错,而这种错误是编译系统无法判断出的错误。例如:下列程序语句实现功能是:当变量X的值,在运行过程中等于0时,输出错误提示:error!“error!”的错误提示,表面上两个只有“二”与“二二”不同的语句都没有什么问题,结果都是正确的。但是,如果将intx二0变更为intx=l,运行结果却是:第一句判断显示的结果还是“error
4、!"的错误提示,第二句判断没有显示输出。实际上结果是很明显的,当x=l时是不要输出错误提示的,而第一句判断仍然是“error!-的错误提示,这是不对的,问题出在第一句判断句的(x二0)中的“二”,该式子表达的意思是把0赋予x,因此无论前面如何改变x的值,执行到第一句判断句时x的值就会被改变为0,判断的结果永远都是输出错误提示。1.2逻辑或运算符“
5、
6、”和逻辑与运算符逻辑运算的结果为逻辑值,逻辑值只冇两个值:“真”和“假”,在C语言中用1表示“真”,用0表示“假”[2]。逻辑运算符的运算数一般为逻辑值,如果不是逻辑值的会自动转为逻
7、辑值,转换的规则是:0为逻辑假,非0为逻辑真。冬如果两个运算数都是假的,则结果是假的,否则结果为真;逻辑与如果两个运算数都是真的,则结果是真的,否则结果为假;逻辑或“11”和逻辑与“&&”的表达式运算规则如果依靠死记硬背这些规则,不常用时是容易混乱出错的。为了方便记忆可以用一个生动的比喻來帮忙,就是逻辑或“II”是一个“好好老师”而逻辑与则是一个“严格老师”。怎么解释应用呢?可以这样看「'好好老师”(或“丨丨”)的要求比较松,只要两个数有一个是“真”的就可以通过,结果就是“真”的;而“严格老师”(与“&&”)比较严格耍求只有两个
8、数都是“真”的才能通过,结果才是“真”的,如果有一个是“假”的就不能通过,结果就是“假”的。除了上表的运算规则还要注意逻辑运算规律是:从左到右的运算的。“好好老师”(或“II”)在运算时如果一直是“假”的就一直向左运算,只要遇到“真”的就结束运算结果为“真”或全部操作数运算结束仍然没有“真”结果就为“假”。“严格老师”(与“&&”)在运算时如果遇到“假”就结束运算结果为“假”,只有一直遇到“真”的才能继续运算,直到所有操作数结束,结果为“真”。这两个运算符在C语言中是很常被使用的,在使用过程屮它们还分为前缀运算和后缀运算两种[3
9、]。它们只作用于变量,不能用丁•常量和表达式,女口:1++,(a+b)++都是不对的,但是自增、自减的变量是可以出现在表达式中的,如:a二a+b++是可以的。运算中变量木身的自增与自减是很容易的,但是与之结合的表达式运算就会出现无法抉择的情况。例子中的X、y的值都与原来预计中的不同的原因是:在x二j+i++屮,i++是后缀引用,是先将变量i的值引用到表达式屮参加运算后再自增,即x二j+i二1+1二2,i二i+1二2,而不是i二i+1二2,再x二j+i二1+2二3,注意:即使加上括•号变为x二j+(i++)运行时也是一样的。在y二
10、j+++i中,本意是要做前缀运算++i的,但因与前面的算术运算符+连在一起出现了混乱,是应该运算y二j+(++i)还是运算y二(j++)+io如果是y二j+(++i),表达式的结果就会是预想中i二i+1二2,y二j+i二1+2二3,但结果却是y二2,应该是运算尸