zoukankan      html  css  js  c++  java
  • C++算术运算符与算术表达式

    基本的算术运算符

    在本章中主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。

    常见算数运算符
    运算符说明举例
    + 加法运算符,或正值运算符 3+5,+3
    - 减法运算符,或负值运算符 5-2,-3
    * 乘法运算符 3*5
    / 除法运算符 5/3
    % 模运算符,或称求余运算符 %两侧均应为整型数据,如7%4的值为3


    需要说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的C++系统上得到结果-1,有的C++系统则给出结果-2。多数编译系统采取“向零取整”的方法,即5/3的值等于1,-5/3的值等于-1,取整后向零靠拢。

    如果参加+,  -,  *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。

    算术表达式和运算符的优先级与结合性

    用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C++语法规则的式子,称C++算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C++算术表达式:
        a*b/c-1.5+'a'

    C++语言规定了运算符的优先级和结合性。在求解表达式时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如有表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。

    C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如赋值运算符)。关于“结合性”的概念在其他一些高级语言中是没有的,是C和C++的特点之一,希望能弄清楚。

    C++所有运算符以及它们的优先级别和结合性请查看这里:C++运算符优先级表

    表达式中各类数值型数据间的混合运算

    在表达式中常遇到不同类型数据之间进行运算,如:
        10+'a'+1.5-8765.1234*'b'
    在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图2.7所示。


    图2.7


    假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面表达式:
        10+'a'+i*f-d/e
    运算次序为:

    1. 进行10+'a'的运算,先将'a'转换成整数97,运算结果为107。
    2. 进行i*f的运算。先将i与f都转换成double型,运算结果为double型。
    3. 整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00),结果为double型。
    4. 将变量e转换成double型,d/e结果为double型。
    5. 将10+'a'+i*f的结果与d/e的商相减,结果为double型。


    上述的类型转换是由系统自动进行的。

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    ASP.NET 后台页面无法识别服务器控件ID
    HTML5 <li> <ol> <ul> 用法
    【转】船体分段测量 船舶精度管理
    【转】2000国家大地控制网
    【转】水准原点
    【转】城市CORS系统建设
    【转】我国常用的高程系统
    【转】地图的分幅与编号
    【转】大地测量系统和参考框架
    【转】国家天文大地网
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4610919.html
Copyright © 2011-2022 走看看