一级棒(Eachfun)
一级棒 - 读书笔记 - C++ Primer - 关系、逻辑和位操作符
RSS订阅
关系、逻辑和位操作符
发表时间:2006-07-15 23:48:32 关键词:C++,MFC,VC,Primer,编程,教程,读书

  关系操作符本身没什么好提的,它们与我们平时身边的逻辑一样,所以不难理解。有两点可以略提一下:
  一、因为ASC字符中没有“≥”这些符号,所以只好用“>=”代替。于是产生了BASIC和C++的两种不同符号集:BASIC用“<>”表示不等于,C++则用“!=”。
  二、程序设计时不能用“if (i < j < k)”这样的写法。原因很简单,因为这种写法另有含义,或者说正因为不能这样写,才给这种写法另外赋了一种含义。
  BASIC和C++的逻辑操作符也有完全不同的写法,BASIC用比较直观的关键字“And”、“Or”之类,C++则用“&&”和“||”。这也没什么,记住就行了。
  逻辑操作符中的“&&”和“||”是C++标准中为数不多的指定了求值顺序的操作符(除此以外还有条件操作符“?:”和逗号操作符“,”,关于求值顺序,后面还将提及)。这样的规定惟一的缺点是需要额外的记忆,优点则是很明显的:它可以让“危险”的操作变得不危险。如“while (i<MaxSize && Array[i]>0)”,对于“Array[i]”来说,指针越界是很可怕的,但是“&&”操作符的求值顺序保证了指针不越界。从另一方面说,要保证指针不越界,就必须记住该操作符的求值顺序(不然就只能分成两个语句写喽)。
  又要提到bool值的比较了,“if (i < j < k)”的实际就是进行了bool值的比较。本书在讲解的时候,虽然提到了“将k与整数0或1做比较”,但是我宁可提醒大家不去记住这个。记住bool值只有true和false两个值,比记住1和0要好得多,因为虽然false就是0,但是true却不仅是1。
  C++中如果只有逻辑操作符也就算了,它偏偏还有“&”和“|”这样的位操作符。而位操作正是BASIC不提供的功能。这就给初学C/C++的人带来了难度。难点不在于理解,而在于记忆。位操作符的作用是进行某一Bit位的设定,在一个字节掰成八份用的年代,它非常常用,—比如Turbo C中的屏幕设置,就是3位表示背景色、4位表示前景色、一位表示闪烁,用一个字节完全存放了屏幕字体的信息。现在的海量存储与高速处理中,大可不必这么节约了(从处理速上看,非但没有节约,反而浪费了),所以,不会位操作也没什么大不了的。
  不过,不熟悉位操作的用户却都知道“<<”和“>>”的另一用处。这事不能怪程序员,几乎所有的C++书本都会从“cin >> i;”和“cout << i;”入手。不用知道这两个操作符原来是干什么的,甚至不用知道“重载”是怎么回事。C++来到这个世界,发展了C语言,使得“知其然不知道其所以然”的程序员也能好好工作。也许这是它的一个进步吧。
 

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!