深入理解C语言中的运算符
11-08 12:39:07软件技巧
浏览次数:848次
标签:软件技巧大全,http://www.duosi8.com
深入理解C语言中的运算符,
1.付作用
在大多数语言中,一个表达式只产生一个运算结果,但在C语言中,情况有所不同,我们来看一个例子:j=i++;当i=2时,熟悉C语言的读者马上就会明白计算结果为j=2,i=3,那么计算顺序和何呢?显然先计算的是i++,结果为2。与此同时记录下来i在计算后加1,然后计算j=2。i加1这一运算可以看成计算i++,得到结果2(注意i++的运算结果为2)的付作用。因此在一个表达式中就完成了对两个变量的赋值运算。
2.赋值运算符
在大多数高级语言中,赋值运算都是一种专门的语句,而C语言中等号是一个运算符,与+、-等符号具有相似地位,这就引起了两个问题。
其一是如何理解诸如“j=2;”这样的表示形式。在BASIC语言中无疑这是一个赋值语句,而C语言中它是j=2这个表达式加上分号构成的表达式语句。运算就是计算j=2这个表达式,结果为2,同时的付作用使变量j中的值变为2。计算结果2没有什么意义,故放弃了,这里运算的付作用反而成了人们的主要目的。仔细考虑m=(j=2);就会明白为什么说j被赋值为2是计算中的付作用。
其二是作为运算符的等号与加减等符号有一很大的不 同。加号的两边可为任意的算术表达式,而在等号左边的表达式却不是任意的。如3+2是合法的,而3=2就不合法了。能在等号左边出现的表达式一般被称为左值,左值往往是一个变量,如j=2;也可能是一个通过指针的引用。在一些深入探讨C语言的书中,对左值有较详细的描述。
3.结合性
C语言中的结合性是大多数高级语言所不具备的特点。理解结合性有助于理解C语言中表达式的运算顺序,当你看到一个复杂的C语言表达式时,首先应按运算符的优先级进行运算。只有在几个运算符的优先级完全相同时,才需考虑结合性,以教材附录C中可以看出,具有相同优先级的运算符,其结合性是相同的。下面我们举一个例子来说明这一原则,如m+=n-=---b这里一共有四个运算符,即+=、-=、-、--、显然先应计算---b、--与-的优先级相同,如何理解---b呢:由结合性知它可能是-(--b),也可是--(-b),因为-b作为一个表达式,不能作--的右值(注意,这里的右值,它与左值类似,是++、--!等运算符能作用的表达式),所以只能是-(--b),然后计算的是+=,和-=,它们的优先级相同,结合性为以右到左,所以左先算-=,后计算+=。
1.付作用
在大多数语言中,一个表达式只产生一个运算结果,但在C语言中,情况有所不同,我们来看一个例子:j=i++;当i=2时,熟悉C语言的读者马上就会明白计算结果为j=2,i=3,那么计算顺序和何呢?显然先计算的是i++,结果为2。与此同时记录下来i在计算后加1,然后计算j=2。i加1这一运算可以看成计算i++,得到结果2(注意i++的运算结果为2)的付作用。因此在一个表达式中就完成了对两个变量的赋值运算。
2.赋值运算符
在大多数高级语言中,赋值运算都是一种专门的语句,而C语言中等号是一个运算符,与+、-等符号具有相似地位,这就引起了两个问题。
其一是如何理解诸如“j=2;”这样的表示形式。在BASIC语言中无疑这是一个赋值语句,而C语言中它是j=2这个表达式加上分号构成的表达式语句。运算就是计算j=2这个表达式,结果为2,同时的付作用使变量j中的值变为2。计算结果2没有什么意义,故放弃了,这里运算的付作用反而成了人们的主要目的。仔细考虑m=(j=2);就会明白为什么说j被赋值为2是计算中的付作用。
其二是作为运算符的等号与加减等符号有一很大的不 同。加号的两边可为任意的算术表达式,而在等号左边的表达式却不是任意的。如3+2是合法的,而3=2就不合法了。能在等号左边出现的表达式一般被称为左值,左值往往是一个变量,如j=2;也可能是一个通过指针的引用。在一些深入探讨C语言的书中,对左值有较详细的描述。
3.结合性
C语言中的结合性是大多数高级语言所不具备的特点。理解结合性有助于理解C语言中表达式的运算顺序,当你看到一个复杂的C语言表达式时,首先应按运算符的优先级进行运算。只有在几个运算符的优先级完全相同时,才需考虑结合性,以教材附录C中可以看出,具有相同优先级的运算符,其结合性是相同的。下面我们举一个例子来说明这一原则,如m+=n-=---b这里一共有四个运算符,即+=、-=、-、--、显然先应计算---b、--与-的优先级相同,如何理解---b呢:由结合性知它可能是-(--b),也可是--(-b),因为-b作为一个表达式,不能作--的右值(注意,这里的右值,它与左值类似,是++、--!等运算符能作用的表达式),所以只能是-(--b),然后计算的是+=,和-=,它们的优先级相同,结合性为以右到左,所以左先算-=,后计算+=。
,深入理解C语言中的运算符
- ·上一篇:为文件夹添加背景
- ·下一篇:用C语言设计立体按钮
热门推荐
- · 为何QQ总弹出安全登录验证2则
- · 多媒体升级时常见故障的处理
- · 利用硬盘驱动器号制作防扩散FOXPRO程序
- · 高速视频转换借力CUDA
- · 在KMPlayer中手动切换解码器
- · 如何突破IP加MAC绑定
- · 如何让ACDSee成为默认的图片浏览器
- · SnagIt连续抓以多个窗口
- · SnagIt直接截取灰度图片
- · Nero快速制作精美的光盘封面
- · 完美卸载XP快速卸载顽固软件
- · VoptXP测试驱动器性能
- · VirturlDriver让虚拟光驱开机时自动加载
- · 通过递归调用来搜索文件
- · AutoCAD复制粘贴图纸导致死机
- · 监控软件导致QQ无法登录
- · 提高WindowsXP启动速度的方法
- · Office 2007无法正常卸载怎么办
- · 如何用批处理一次建立或删除多个目录
- · 教你Windows百毒不侵的13个妙招
- · ATI显卡在线看电影时花屏应该如何解决