a>=10&&a<=0

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

计算机C语言: C语言是被使用的最廣泛的一种高级语言其历史相当久远。而其发展也相当神速 从当初的标准C发展到后来的C++。其性能也发生了很多很大的变化C语言拥有眾多的编译器,其中不乏优秀者众多 从当初的Turbo C引入集成化编译环境后,C语言就以其灵活性高效率,可移植性好深入人心后来发展起來的C++,Jv 等语言,无不是在 其基础进行扩充使其更为灵活,更方便易用新的C++编译器引入了很多特色。 使得C语言语法更加灵活摒弃了标准C對语法死板的要求。使得编程随心所欲这里推荐 Borlnd C++ 和Visul C++。当然这是指Dos应用如果开发Window...

  计算机C语言: C语言是被使用的最广泛的一种高级语言,其历史相当久远而其发展也相当神速, 从当初的标准C发展到后来的C++其性能也发生了很多很大的变化。C语言拥有众多的编译器其中不乏优秀者众多。
  从当初的Turbo C引入集成化编译环境后C语言就以其灵活性,高效率可移植性好深入人心。后来发展起来的C++,Jv 等语言无不是在 其基础进行扩充,使其更为灵活更方便易用。新的C++编译器引入了很多特色
  使得C语言语法更加灵活。摒弃了标准C对语法死板的要求使嘚编程随心所欲。这里推荐 Borlnd C++ 和Visul C++当然这是指Dos应用,如果开发Windows应用程序那么当 首推Visul C++。
  Visul C++的可视化及自动代码生成功能相当强大尤其它提供嘚 Wizrd 和ppstudio,使得开发程序简直成为一种享受而且由于Visul C++在各版本之间的连续性,使得开发者不必经历换版带来的痛苦
   学习C语言,起初会觉得偠记的东西太多这是由于它太灵活了。但是学到一定程度就会尝到甜头了。这种灵活性带来的是可读性好语法简单,效率高当然C語言最大的 特色还是它的指针对指针的透彻理解将是今后开发工作中的得力助手。
  因为在C++中指针无处不见很多参数就完全是指针化的。雖然Jv中摒弃了指针那是从安全性 方面考虑。如果从性能上来说那是大亏了。所以指针是一个核心要学好C语言,无非要透彻理解书本概念辅之以大量上机编程。
  要想提高应用水平 就要多看些应用方面的书。比如看看数据结构然后自己想办法来实现其中的算法。总の编程是靠编出来的,不是靠看出来的在调试程序时,尽量自己解决实在 解决不了,可以请教老师总之,独立思考很重要
  有条件的话,在网上提问题可受到事半功倍的效果。坚持下去相信不久你就会成功的喜悦了。 以上所述旨在抛砖引玉,若有不当敬请見谅! 编写优质无错代码 一。 引言 八月上旬深圳举办了一个讨论会,主题是"编写优质无错代码"
  这个讨论会吸引了深圳各大软件公司,通信公司的程序员系统分析员参加,并在讨论会后纷纷表示这种讨论会很有实际价值,希望将这种形式的讨论会继续下去形成一个論坛,以提高大家的编程水平和交换有价值的信息资料
   这个活动的发起是从网络上开始的。我偶然看到了这个讨论会的论题发生了兴趣。本来周末的我一般是很懒的没什么事情是不会出门的。而当我看到这论题后就给举办者发信表示愿意参加。于是一个周六的下午,我就坐在了讨论会的现场
  参加完这个讨论后,我觉得有必要把其中的精华部分写下来和网络上的广大程序员共享,于是就有了这篇文章 二。主题: 编写优质无错的代码---讨论会主题相信每个程序员都有这种希望,谁都不愿意自己写出来的代码在relese之后出错需要不停的修改维护。
  但是主持人提出了这样一个问题:"编写优质无错代码是否必要?" 为什么呢我稍微解释一下。在项目的时间很紧张的时候是按期完成任务重要,还是代码的稳定性优质无错重要呢? 主持人提出的四个具体问题是: 1、编写优质无错的代码的代价是什么 2、代码的质量重要还是编写效率重要? 3、在压力的情况下你会牺牲质量来提高效率么? 4、编写优质无错的代码是否意味着效率的降低? 对於第一个问题编写优质无错代码的代价当然是时间,不过随着编程人员的经验逐渐丰富所需要的时间也逐渐减少。
   对于第二个问题玳码的质量比编写效率重要。当你花了1周时间写出来的代码需要你花一个月或者更长的时间去debug, 去修改错误这种效率的损失是得不偿失的。 对于第三个问题 这需要看项目经理或者产品经理的态度和专业精神了。
  如果在一个专业的项目经理或者产品经理的指挥下当然是首先保证质量其次提高效率。而对于某些项目经理或者产品经理来说按时完成任务是最重要的,他们往往不在乎在软件发布之后花比开发時间长得多的时间去修改程序维护错误。
  因为对于他们来说,首先是要完成任务好给上级领导交差,至于后期维护就是另外一个任务了,维护花的时间多正说明了他这个项目的复杂性和难度。而对于开发人员来讲所希望的则正好相反。开发人员不喜欢花太多的時间在一个烂摊子上
  所以,在讨论会上大家纷纷表示,应该让项目经理或者产品经理也来听一听这个讨论会:-) 对于第四个问题,当然優质无错代码不是意味着效率的降低而是正好相反,对提高效率有很好的促进作用一个版本发布之后,如果因为错误太多开发人员鈈得不去花很多时间修改bug, 甚至要从系统的体系结构方面去做大的改动,重新编写部分代码这种效率的降低才是更大,更不能承受的
  而苴,花了太多的时间在老版本的维护上必然影响到新版本的工程进度,直接影响到整个产品线的质量和进度严重的甚至会毁掉整个产品。 对于这一个主题我的回答是,在时间允许的范围之内尽量提高代码的质量,不追求慢工出细活不追求代码的100%无错,但是要保证99%鉯上的无错
  这样,在时间的压力下在质量要求的束缚下,就要求程序员有一个良好的习惯和稳健的编程风格,以保证代码的优质无錯这就是第二个问题:什么是编写优质无错的代码的核心思想?优质无错是相对的而不是绝对的。
  任何代码都不可能说是绝对无错嘚,但是在绝大部分情况下是稳定的,强健的优质的,无错的每次发布的时候,都会对上次的发布版本做若干修改增强功能的同時,也要修改若干bug 那么,核心思想就是: 怎样才能自动地查出这个错误
   怎样才能避免这个错误。 三编写优质无错代码的经验 在说了上媔很多理论性的问题之后,来看一看具体问题 先来看一看一个具体的题目:(我本人就是先在网上看了这个题目,才对这个讨论会发生興趣的) 题目1: 作为开发团队的一员你需要实现一些库函数提供给其他人使用。
  不过对于这些程序员讨论也是有借鉴作用的。) 关于这個问题大概是所有的程序员都会遇到的。所以在网上和讨论会上,都发生了激烈的争论和意见交换我大概把主要的几种观点记录了┅下,列举在下面: 1、选择f的理由 因为非NULL是约定所以可以确定是调用者的问题,f可以明确地指出这一点防止错误扩散。
   我的附加说明: 防止错误扩散的意思是如果用其他方式,比如throwexception的方式这个异常不一定会在调用此函数的上一层被捕捉到,可能会被继续抛出直到最上┅层或者直到在某一层被ctch到这样的话,错误就会距离发生地点很远扩散开来。
   这一观点代表了一大部分的程序员的观点。 2、反对用f 鈈赞成ssert, ssert更重要的作用是程序体里面的一个注释, 在阅读程序的时候起作用不能依赖他来检测错误, 很大程度上ssert容易使使用者依赖它本不应该依賴的东西
  这也代表了部分程序员的观点,认为ssert是不可依赖的而应该依赖于错误检测,比如返回值或者异常 3、另外一种观点 f和d都可取。如果没有系统开销的考虑d则更好些。可以一举两得如果没人ctch这个exception,其结果就跟f一样按bug处理,dump core留下一stck trce
  既然已经是约定,就干脆付起责任 4、一种反对d的理由 不可用d, 这就像你用人,却不相信人一样,偏要try,ctch防范他。其实那个错是自己造成的,如果看到异常就容易不检讨自己 5、关于观点3的支持意见 讨论过程中,有人认为ssert检查的是bug, 而异常是可以恢复的意外情况
  所以,观点3的支持者说:可恢复的意外是可以理解嘚但可恢复的bug就没什么意义了。既然已经约定好了你再违背,就属于是bug而不是意外了(比如打不开文件什么的)很多库函数都不检查指針的合法性(除了系统调用以外,因为总不能让系统dump core吧)也不检查指针是否为NULL(因为如果层层都检查,必定劳民伤财干脆让最上面调用的人茬调用之外查)。
   6、选择d+f 选f+d, 好处如下: 以最激烈的方式充分暴露调用都的错误!能及时修改BUG b便于调试,问题出现后,直接到事故现场比120还赽! c对于relse版的代码没有任何副作用。
   d以处理的代价来看 采用断言也是编写最小一种 e它是多语种,多平台所通用的方式 如:C /C++ VB,Jv1。4 在win ,unix 通吃, 便于迻置! 如果在现实中测试没有能找到所有的BUG,那可能就要用异常来帮忙了! 当然,我也提出了我的观点, 我支持观点6
  理由如下: ssert只在debug标志的時候有用,而在编译relese版本的时候不起作用ssert对于检查硬编码的错误,是非常有用的能够及时的查处编码的错误。比如borlnd c++的类库源代码中就囿很多这样的ssert
  但是ssert不是万能的,因为有很多错误的发生不是完全在编译时发生的而是运行时的错误。在relese后ssert是不可能依赖的。那么峩们就需要exception这一机制来检测运行时错误,并相应的做出处理
  当然,在异常检测和处理过程中还有许多需要讨论的问题由于不是这一题目的范围,我们没有必要继续讨论得太多但是,提出来希望大家注意:异常不是捕获了就完成任务了而要对于不同的情况,采取不同嘚处理办法千万不能只是捕获,而不做任何处理那样和不捕获异常没有任何别。
   在题目刚刚提出的时候选择各种答案的人都有,所鉯我有必要在这里把其他答案为什么不能选的理由说一下。 () if (!pPrm) return 0; 这是很多初级程序员常常采取的一种方式
  返回值设为0。 因为函数的返回值往往是计算的结果不赞成把错误标志值和计算结果混在一起使用,容易造成使用者的误会当然,在很多unix函数中由于历史原因,还存茬很多这样子的函数所以需要指出,不要沿用这种方式
   (b) if (!pPrm) return ERROR_PRM; b比稍微好一点点,返回了一个常量或者预定义的宏 从返回值的字面上,调用鍺能知道发生了什么错误但是,这也不是一种好的方法
   (e) if (!pPrm) MessgeBox(。。); 这是一种比较可笑的方式当然也有不少人用。MessgeBox是直接弹出一个对话框告诉使用者,出错了但是并不做任何处理,程序继续往下执行直到出错崩溃。
  呵呵 (f) ssert(!pPrm); 断言刚刚已经讨论过了,不再赘述 以上这个題目,引发了所有与会者的兴趣讨论异常热烈,最后主持人也给出了自己的观点:d+f。当然这并不是标准答案因为编程这一门课程本来僦没有什么标准答案,大家见仁见智这个答案只是经验的积累。
   主持人紧接着列出了"编写优质无错代码的经验": 理想的编译器和实际的編译器 b。使用断言 c函数的界面设计 d。考虑风险 e态度的问题 以上是本节的主要内容。断言刚刚的问题中已经讨论过了,来看看其他的內容
  但是仔细看看,你就会发现while(size -- >0);这里多了一个分号导致下面的*pbTo++= *pbFrom++;不是在while循环中执行多次,而是只执行了一次当然这不是函数设计者嘚预期结果,而编译器却不会报告错误因为while(size -- >0);从语法上来讲,并没有错误
  这就是理想的编译器和实际的编译器的区别所在。 那么该怎么检查这种错误呢?主持人提出了如下办法: while(size -- >0) NULL; 可以加入NULL来解决空语句 这样子,当你需 要 while(size -- >0) *pbTo++= *pbFrom++; 这种形式的时候就不会发生错误了,只需要鼡眼睛看看就能发现了。
   两点好处 1 无冗余代码2 使人更明白。减少风险 还有人会这么写 if( (n=red(。。)) == 1) 。。 在这里,赋值符号=和判断相等的符号==容易敲错而编译器又检查不出来,可能就会有如下错误: If(ch = ‘ ’)
  。;这也是需要注意的问题。 理想的编译器和实际的编译器尛结: 把屡次出错的合法的C习惯用法看成程序中的错误 b。增强编译器的警告级别 c使用其它的工具来检查代码 如 Lint 等 d。
  进行单元测试 e消除程序错误的最好方法是尽可能早、尽可能容易地发现错误,要寻求费力最小的自动查错的方法 f努力减少程序员查错所需的技巧 使用断訁 题目三 下面函数实现,哪一个好为什么?
  要使用断言对函数参数进行确认 b。要从程序中删去无定义的特性或者在程序中使 用断言来檢查出无定义特性的非法使用 c不要浪费别人的时间-详细说明不清楚的断言 d。消除所做的隐式假定或者利用检查其正确性 e。
  在进行防错性程序设计时不要隐瞒错误防错性程序设计虽然被誉为有较好的编码风格,但它却隐瞒了错误要记住,我们正在谈论的错误决不应该洅发生而对这些错所进行的安全处理 又编写无错代码变得更加困难 f。
  要利用不同的算法对程序的结果进行确认 g不要等待错误发生,要使用初始检查程序 断言小结: 要同时维护交付和调试两个版本。封装交付的版本应尽可能地使用调试版本进行自动查错。 b断言是进荇调试检查的简单方法。
  要使用断言捕捉不应该发生的非法情况不要混淆非法情况与错误情况之间的区别,后者是在最终产品中必须处悝的 c。使用断言对函数的参数进行确认并且在程序员使用了无定义的特性时向程序员报警。涵数定义得越严格确认其参数就越容易。
   d防错性程序设计会隐瞒错误。在进行防错编码时如果”不可能发生”的情况确实发生了,要使用断言进行报警 写到这里,我们初步探讨了编写优质无错代码的必要性原则,和相关经验留几个练习题目,大家也参与一下讨论吧

我要回帖

更多关于 !(a>b)&&!c||1 的文章

 

随机推荐