变量和算术运算之算术运算(二)

/*主要内容:
           1.算术运算的优先级
                   2.算术声明的缺陷
                   3.在算术表达式中混合整数和实数
                   4.类型强制转换
                   5.边缘效应*/

#include<iostream>
usingnamespace std;
int main()
{
       
int i=1,j=1,
                k1
=10,k2=20,k3=30,k4=40,k5=50,
                k
,h,m,n;

       
double a=7,b=6,c=5,d=4,
                e
,p,q,x,y,z;
    cout
<<"*********Section 1***************"<<endl;/*变量前后使用++的不同*/
        cout
<<"Before increment,i="<<i<<",j="<<j<<endl;

        k
=i++;//注意,此时结果不同。执行后,i和j都为2,但是k为1,h为2
        h
=++j;


        cout
<<"After increment,i="<<i<<",j="<<j
               
<<",k="<<k<<",h="<<h<<endl<<endl;
        cout
<<"*********Section 2***************"<<endl;/*算式表达式中使用double和int变量的不同*/

        m
=6/4;
        p
=6/4;
        n
=6/4.0;
        q
=6/4.0;

        cout
<<"m="<<m<<",p="<<p<<",n="<<n<<",q="<<q<<endl<<endl;

        cout
<<"*********Section 3***************"<<endl;/*复合运算符*/
        cout
<<"Original k1="<<k1<<",k2="<<k2<<",k3="<<k3
               
<<",k4="<<k4<<",k5="<<k5<<endl;

        k1
+=2;
        k2
-=i;
        k3
*=(8/4);
        k4
/=2.0;
        k5
%=2;
        cout
<<"New k1="<<k1<<",k2="<<k2<<",k3="<<k3<<",k4="<<k4
               
<<",k5="<<k5<<endl<<endl;

        cout
<<"**********Section 4**************"<<endl;/*运算符优先级问题*/

        e
=3;
        x
=a+b-c/d*e;
        y
=a+(b-c)/d*e;
        z
=((a+b)-c/d)*e;

        cout
<<"a="<<a<<",b="<<b<<",c="<<c<<",d="<<d<<",e="<<e
               
<<endl<<endl;

        cout
<<"x=a+b-c/d*e="<<x<<endl
               
<<"y=a+(b-c)/d*e="<<y<<endl
               
<<"z=((a+b)-c/d)*e="<<z<<endl;
       
return0;
}
/*
  赋值语句中使用前增量和后增量运算符:
       k=i++等价于k=i,i++;
           h=++i等价于j=j++,h=j;
           再例如:i=2,j=3*(i++)-2;j的值变为4;
                   i=2,j=3*(++i)-2;j的值变为7;

  相同类型和混合类型的算术:
  1.double和double型运算,结果为doouble型。
  2.int和int型运算,结果为int型。
  3.double和int型运算,结果暂时为double型。
  4.当给int型赋double型的值时,将会切掉小数部分。

  修改c++在算术运算中使用类型的方式:C++可以强制改变变量的类型,需要使用关键字static_cast,通常形式为:static_cast<type>(expression).
  eg:int a=5,=2,c;
     double x,y=12.3,z=18.8;
         x=(static_cast<double>(a))/(static_cast<double>(b));
         c=static_cast<int>(y)+static_cast<int>(z);
         将会得到:
         x=5.0/2.0=2.5
         c=12+18=30
  同时,C++还拥有一种老的使用方式,即是(type)expression

  总结算术运算符:
  运算符           名称              操作数(需要的变量)      位置         结合性      优先级
  (                圆括号            一元                    前置         从左到右    1
  )                圆括号            一元                    后置         从左到右    1
  ++               后增量运算符      一元                    后置         从左到右    2
  --               后减量运算符      一元                    后置         从左到右    2
  ++               前增量运算符      一元                    前置         从右到左    3
  --               前减量运算符      一元                    前置         从右到左    3
  +                取正运算符        一元                    前置         从右到左    3
  -                取负运算符        一元                    前置         从右到左    3
  static_cast      强制类型转换      一元                    前置         从右到左    4
  %                取模运算符        二元                    中置         从左到右    5
  /                除法运算符        二元                    中置         从左到右    5
  +                加法运算符        二元                    中置         从左到右    6
  -                减法运算符        二元                    中置         从左到右    6
  +=               加并赋值运算符    二元                    中置         从右到左    7
  -=               减并赋值运算符    二元                    中置         从右到左    7
  *=               乘并赋值运算符    二元                    中置         从右到左    7
  /=               除并赋值运算符    二元                    中置         从右到左    7
  %=               取模并赋值运算符  二元                    中置         从右到左    7
  =                赋值运算符        二元                    中置         从右到左    7


  结合性:从左到右,由高到低运算。

  使用圆括号:圆括号内的先运算。

  用C++风格的算术编程:
  1.运用除法时,先检查变量类型。
  2.当赋值语句左边有一个double或floating类型时,赋值语句右边每个变量最好加小数点。
*/

转载于:https://www.cnblogs.com/gsk11092114/archive/2012/06/21/2558090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值