您的位置:首页 > 其它

(三十九)运算符

2015-12-03 16:17 357 查看
c++的运算,具体是2个操作数,加一个运算符。例如3+4,3和4是操作数,+是运算符。

加法运算:+ 如1+2,结果是3

减法运算:- 如3-1,结果是2

乘法运算:* 如3*4,结果是12

除法运算:/ 如4/2,结果是2。若前后2个数都为整数,则取结果的整数部分(不四舍五入)。

求模运算:% 如7%4,结果是3。

求模的意思是,求第一个数除以第二个数之后的余数。例如7/4=1余3,所以结果是3,而5/2的结果是2余1,所以5%2输出为1。

另外,求模的两个操作数都必须是整型(即整数,但不一定为正),如果是浮点数(即小数,则会报错)。

求模比如是a%b,若其中有一个为负数,则a%b=a-(a/b)*b

即,若a正b负,则a%b为正,若a负b正,则a%b为负。即a%b的正负跟a相关。大小为a%b(假设a、b都为正数时的余数),然后前面加上a的正负符号。

例如 -9%4=-1 ;而 9%-4=1。

关于除法:

假如a/b其中a或者b中至少有一个浮点数(即小数),那么a/b则保留小数,结果为浮点数。如果没有浮点数,则结果为整数(舍去小数部分)。例如7/6的结果是1,而不是四舍五入后的2。

注意:7/6的结果是1,但是7.0/5的结果却是1.16667(共6位)

关于计算时的优先级:

类似数学算式,先乘除后加减,例如2*3+3的结果是6+3=9,而非2*6=12。

但是如果同时牵扯到乘除或者求模(求余数),最好加上括号,以防出错。例如:3/6*4这种事情应该尽量避免,应写成(3/6)*4。

至于具体的,有C++的运算符优先级的说明,以及 综合性方面的信息。总之,为了避免麻烦,还是尽量加扩哈以免出错吧。

上代码:

//运算符演示
#include <iostream>

int main()
{
using namespace std;
int a = 5, b = 3, d = -3, e = -5;
double c = 3.0;
cout << "已知a=5,b=3,c=3.0,d=-3,e=-5,现就各个运算符进行演示" << endl;
cout << "a+b= " << a + b << endl;
cout << "a-b= " << a - b << endl;
cout << "a*b= " << a*b << endl;
cout << "a/b= " << a / b << "   ←左边是整型的除法" << endl;
cout << "a/c= " << a / c << "   ←左边是包含一个浮点数的除法,注意,结果也是浮点数" << endl;
cout << "a%b= " << a%b << "   ←左边是5%3的求模" << endl;
cout << "a%d= " << a%d << "   ←左边是5%-3的求模" << endl;
cout << "e%b= " << e%b << "   ←左边是-5%3的求模" << endl;
cout << endl;
cout.setf(ios_base::fixed, ios_base::floatfield);	//貌似是强制显示小数点后6位,可以用于确认精确度
cout << "以下是不同的除法,注意,f结尾的为float类型浮点数,L结尾为long类型浮点数,只有小数点的为double类型浮点数,而无小数点的为int类型的整型\n";
cout << "8/3= " << 8 / 3 << "   ←为整型之间的除法" << endl;
cout << "8.0/3.0*1e6= " << 8.0 / 3.0*1e6 << "   ←为double类型的除法" << endl;
cout << "8.0f/3.0f*1e6= " << 8.0f / 3.0f*1e6 << "   ←为float类型的除法" << endl;
cout << "8.0L/3.0L*1e6= " << 8.0L / 3.0L*1e6 << "   ←为long double类型的除法" << endl;
system("pause");
return 0;
}


输出内容为:

已知a=5,b=3,c=3.0,d=-3,e=-5,现就各个运算符进行演示
a+b= 8
a-b= 2
a*b= 15
a/b= 1   ←左边是整型的除法
a/c= 1.66667   ←左边是包含一个浮点数的除法,注意,结果也是浮点数
a%b= 2   ←左边是5%3的求模
a%d= 2   ←左边是5%-3的求模
e%b= -2   ←左边是-5%3的求模

以下是不同的除法,注意,f结尾的为float类型浮点数,L结尾为long类型浮点数,只有小
数点的为double类型浮点数,而无小数点的为int类型的整型
8/3= 2   ←为整型之间的除法
8.0/3.0*1e6= 2666666.666667   ←为double类型的除法
8.0f/3.0f*1e6= 2666666.746140   ←为float类型的除法
8.0L/3.0L*1e6= 2666666.666667   ←为long double类型的除法
请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: