« google工具栏第5版(测试版)注重与Firefox的兼容 »

C语言算术运算符和算术表达式

作者:vich 发布于 2008-11-6 12:47 评论(1)人阅读

一、C语言算数运算符的分类

C语言的算术运算符共有7个,对应9种运算。按运算对象来分,有两个运算对象成为双目运算符;只有一个运算对象,称为单目运算符。

双目运算符有:+(加) -(减) *(乘) /(除) %(求余数,运算对象必须为整型),共对应5种运算。如:a+b;a-b;a*b;a/b;等都有a和b两个运算对象。

单目运算符有:++(自增1,运算对象必须为变量) --(自减1,运算对象必须为变量) +(取正) -(取负),共对应4种运算。如:a++;a--;等只有a一个运算对象。

如何理解++,--前缀形式和后缀形式的运算符?
++,--在变量左边叫前缀形式,表示先使变量的值加1或减1,然后再使用变量的值;++,--在变量右边叫后缀形式,表示先使用变量的值,然后再使变量的值加1减1。

例如:设int x=5;

y=++x; 表示先计算x=x+1,再计算y=x,结果y=6,x=6。

y=x++; 表示先计算y=x,再计算x=x+1,结果y=5,x=6。

二、C语言算术运算符的运算优先级和结合性

优先级:指同一个表达式中不同运算符进行计算时的先后顺序。

结合性:指相同优先级的多个运算符的求值顺序。

算术运算符的运算优先级

  1. ()
  2. ++、--、-(取负)
  3. *、/、%
  4. +、-

1最高,4最低。

算术运算符的运算结合性:

  1. () 自内向外
  2. ++、--、-(取负) 自左向右,注意此时++,--是作为前缀形式。
  3. *、/、% 自左向右
  4. +、- 自左向右

三、C语言的算术表达式

C语言算术表达式只能由运算符、圆括号、系统库函数和运算对象组成。

如:(a+b+c)/sqrt(a)+b*(sin(x)+sin(y))

四、算术型数据混合运算的类型转换

自动类型转换

自动类型转换也称为隐式类型转换。C语言约定自动转换规则是有低级向高级转换,如果一个运算符带有两个不同类型的操作数,那么在操作之前先将较低的类型转换为较高的类型,然后进行运算,运算结果取较高的类型。

数据类型自动转换规则示意图
水平箭头表示必定转换,纵向箭头表示两个不同类型对象时的转换方向。

强制类型转换
强制类型转换又称为显示类型转换,是根据程序的需要,将某数据强制转换成指定的数据类型。强制类型转换形式如下:

(类型标识符)表达式

例如:(int)(2.7+6.8),这表示将2.7+6.8的运算结果9.5强制转换成int类型整数9,舍弃小数部分。而(float)x/y则表示将x强制转换成float型后,再与y进行除法计算。

需要注意的是,强制转换得到的结果只是一个临时的,变量或表达式原来的类型并没有发生任何变化。

最后举几个例子进一步巩固前面的知识。

例如:设float x,y;

x=6/4;

y=6./4;

结果是x的值为1.0,y的值为1.5。因为两个整数直接相除,结果自动取整,丢弃小数部分。

例如:设int x=5;

y=x++*x++; 先做x*x的运算,使y=25,再进行连续两次x++,使x=7。(因为后缀是先使用变量值,然后自加。)

y=++x*++x; 先进性两次x++运算,使x=7,再做x*x运算,使y=49。(因为前缀是先自加,后使用变量值)

y=x++*++x; 先做最右边的++x运算,是x为6,再做x*x的运算,使y=36,最后做x++运算,使x=7。(这里可以总结成优先级:前缀运算符>双目运算符>后缀运算符)


原创文章如转载,请注明:转载自微风博客 [ http://www.vichx.com/ ]

本文链接地址:http://www.vichx.com/post/c-2-4-1.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

RSS图标订阅 [留言] RSS订阅  手机版
搜索栏

热门文章

最新评论及回复

最新文章

关于微风博客
Powered By Z-Blog
CopyRight 2007-2008 微风博客 沪ICP备07009058号 [管理]