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类型的除法 请按任意键继续. . .