/*主要内容:
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类型时,赋值语句右边每个变量最好加小数点。
*/