首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 程序员资料 > 正文

2011年软件水平考试程序员之程序设计知识点6

考试吧整理“2011年软件水平考试程序员之程序设计知识点6”,方便考生备考!

  2.4 运算符

  每个运算符都代表对运算对象的某种运算,都有自已特定的运算规则,规定运算对象的个数、运算对象数据类型,以及运算结果的数据类型。C语言还规定运算符有不同的优先级和结合性。运算符的优先级指表达式求值时,按运算符的优先级由高到低的次序计算。如“先乘除后加减”。运算符的结合性是指运算符要求它的运算对象对它的结合方向。结合性确定了在相同优先级运算符连续出现的情况下运算对象与运算符结合的顺序,通常也是计算顺序。如算术运算符的结合性是从左至右的,则连续的加减或连续的乘除是从左向右计算。而赋值运算符的结合性是从右至左的,则连续的赋值运算是从右向左逐个计算赋值。在C语言中,要特别注意某些运算符因运算对象数据类型不同,可能有不同的意义。

  1.算术运算符

  算术运算符的运算对象是基本数据类型的数据,实现通常的取整、取负、四则运算、求两整数相除后的余数的运算和增1减1运算。特别要留心的是整除运算、求余运算、增1运算和减1运算。

  对两个整型数据执行除运算(/),称为整除运算,要特别注意的是两个整型数据的整除运算的结果是整型的,如表达式3/2的结果为1,表达式2/3的结果为0。

  求余运算符(%)要求参与运算的两个运算对象均为整型数据,如 5% 3的值为 2。一般来说,求余运算所得结果的符号与被除数的符号相同。如-5%3的值为-2,5%-3的值为2。

  增1(++)和减1(--)运算符都是单目运算符,以整型、字符型和指针型变量为运算对象,并改变运算对象的值。按它们出现在变量之前和之后两种不同情况,其作用有微妙的差别。

  前缀++

  前缀++的一般形式是

  ++变量

  例如,若X是整型或某种指针类型的变量,则++X使变量X的值增大1个单位,并以X的新值作为表达式“++X”的运算结果。如以下语句执行前,变量X的值为1,语句

  j= ++ x;

  使变量X的值变成3,变量j的值也为3。这里所说的一个“单位”是指:如果X是整型的,则++x就是普通的解释:“x的值比原值增加1";x是指针,它指向数组的某个元素,则++x使它指向数组的后一个元素。

  后缀++

  后缀++的一般形式是

  变量++

  表达式“变量++”运算结果是该变量的原来值,在确定了表达式结果之后,用与前缀++相同的方式增大该变量的值1个单位。

  前缀++和后缀++都能使变量的值增加1个单位,但是它们所代表的表达式的值却不相同,前者是变量增加后的值,后者是变量还未增加的原先值。例如i,j为整型变量,且i的值为4,以下分别用①和②表记的代码将使j获得不同的值:

  ①j=++i ;

  ②j= i++

  都使变量i的值变为5,但①使j的值为5;②使j的值为4。

  前缀--

  前缀-- 的一般形式是

  --变量

  前缀--使变量的情减少(或后退)l个单位,并以变量的新值为表达式“--变量”的运算结果。

  后缀--

  后缀-- 的一般形式是

  变量--

  后缀-- 作用于变量时,以该变量的值作为表达式“变量--”的运算结果,即先取其值为结果,然后用与前缀--相同的方式减少该变量1个单位。

  后缀-- 与前缀-- 的区别类似于后缀++与前缀++的区别。类似前面的例子,依旧假定i的值为4,两代码

  ③j= --i

  ④j=i--

  都使变量i的值变为3,但③使j的值为3;④使j的值为4。

  使用++和--运算符时,其运算对象仅适用于变量,不能是常量等数据值表达式。如 4++或(i+j)++都是不合法的。

  ++和--是带有副作用的运算符。建议读者不要在一个表达式中对同一变量多次使用这样的运算符,可能会发生意想不到的结果。如i的值为4,对表达式

  (i++)+(i++)

  可能认为它的值为 9(+5)。然而在 TURBO C和MS C系统中,它的值为8。而表达式

  (++i)+(++i)

  的值为12。这是因为这些系统在处理 i++时,先使用 i的原值计算整个表达式,然后再让i连续两次自增;处理++i时,在计算表达式值之前,先对 i执行两次自增,然后才计算表达式。放前一个表达式的值为8,后一个表达式的值为12。

  因+与++(-与--类似)是两个不同运算符,对于类似表达式i+++j会有不同的理解:(i++)+ j或i+(++j)。 C编译的处理方法是自左至右让尽可能多的字符组成一个合法的句法单位(如标识符、数字、运算符等)。因此,i+++j被解释成(i++)+j,而不是i+(++j)。

  增1(++)和减1(--)运算符的结合方向是自右至左的。

  2.关系运算符

  用于关系运算的关系运算符有六个:<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、==(等于)和!=(不等)。关系运算是双目运算,它的运算对象可以是基本数据类型的数据,用于比较大小;或是指向同一个数组两元素的指针,用于比较前后关系。在高级语言中,习惯称条件满足为“真”,不满足为“假”。特别在C语言中约定:比较后,条件满足(真)的值为1;比较后,条件不满足(假)的值为儿用关系运算符将两个子表达式连接起来,构成关系比较表达式,求得结果为1(真)或0(假)。

  六个关系运算符中,运算符(<、<=、>、>=)的优先级高于运算符(==,!=)。如表达式X>y==Cy)==(C

  另外,为便于描述两个复杂算式的比较,关系运算符的优先级低于算术运算符的优先级。

  设有i=1,j=2,k=3,则表达式i>j的值为“假”,即表达式的值为0;表达式i==k>j的值为“真”,即表达式的值为1(先计算k>j,其值为1,等于i);i+j

  的值为0。

  关系运算符的结合方向是自左至右。仍设i=1,j=2,k=3,则表达式k>j>i的值为0(先计算k>j,其值为1,再计算1>1,结果为0)。

  3.逻辑运算符

  用于逻辑运算的逻辑运算符有三个:

  &&(逻辑与)、||(逻辑或)、!(逻辑非)

  其中运算符“&&”和“||”是双目运算符,要求有两个整型或字符型的运算对象,用于连接多个判定条件,构成更复杂的条件判定;运算符“!”是单目运算符,用于描述对给定条件的否定判定。

  逻辑运算产生的结果也只能是1或0。 1表示逻辑运算结果为“真”;用0表示运算结果为“假”。

  在判定一个运算对象的值为“真”或“假”时,以运算对象的值不等于零为“真”,运算对象的值等于0为“假”。

  逻辑运算符中,按优先级排列为:逻辑非运算符!的优先级高于逻辑与运算符&&,逻辑与运算符&&的优先级高于逻辑或运算符||。另外,&&和||的优先级低于关系运算符的优先级;!的优先级高于算术运算符的优先级。逻辑运算符||和&&的结合方向是自左至右,而逻辑运算符!的结合方向是自有至左。

  需要特别指出的是,“逻辑与”和“逻辑或”运算符分别有以下性质:

  a&&b,仅当a为0时,不管b为何值(实际上不再计算b),结果为0。

  a||b,仅当 a为 1时,不管 b为何值(实际上不再计算 b),结果为1。

  上述性质就是说,对于表达式a&&b,仅当子表达式a为非零时,才计算子表达式b;对于表达式a||b,仅当子表达式a为0时,才计算子表达式b。在具体编写程序时,也应利用以上性质。对于两个条件的逻辑与,如当条件1不成立情况下,条件2的值没有意义或不可计算时,逻辑表达式应写成:

  条件l&&条件2

  避免在条件1不成立情况下,计算条件2。如有条件:y/x>2且 x!=0,应写成: x!=0 && y/x>2

  当X为0时,不会计算y/X。而写成:

  y/X>2 && X!=0

  是不正确的,因为当 X为0时,不能计算y/X。对于逻辑或也有类似情况。

  由于上述性质,在计算连续的逻辑与和逻辑或运算时,实际上不分优先级,而是顺序从左至右计算。在计算逻辑与运算时,若有左运算对象的值为0,则不再继续计算逻辑与运算,并立即以0为逻辑与运算的结果;在计算逻辑或运算时,若有左运算对象的值为1,则不再继续计算逻辑或运算,并立即以1为逻辑或运算的结果。在顺序计算逻辑表达式的过程中,一旦确定了表达式的最终结果,就不再继续计算。

1 2 3 4 下一页
  相关推荐:

  2011软考程序员考试复习笔试知识点整理汇总

  2011年软考程序员考试模拟试题及答案(上午题)

  2011年软考程序员考试模拟试题及答案(下午题)

文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。