# Learn C++ - C++ Arithmetic Operators

C++ has operators for five basic arithmetic calculations: addition, subtraction, multiplication, division, and taking the modulus.

Each of these operators uses two values called operands to calculate a final answer.

Together, the operator and its operands constitute an expression.

For example, consider the following statement:

`int result = 4 + 2;`

The values 4 and 2 are operands, the + symbol is the addition operator, and 4 + 2 is an expression whose value is 6.

Here are C++'s five basic arithmetic operators:

• The + operator adds its operands.
• The - operator subtracts the second operand from the first.
• The * operator multiplies its operands.
• The / operator divides its first operand by the second.
• The % operator produces the remainder of dividing the first by the second.

% operator works only with integers.

## Example

The following code does some C++ arithmetic.

``````
#include <iostream>
using namespace std;
int main() // www.ja  va  2  s .  co m
{
float hats, my_head;

cout.setf(ios_base::fixed, ios_base::floatfield); // fixed-point
cout << "Enter a number: ";
cin >> hats;
cout << "Enter another number: ";
cin >> my_head;

cout << "hats = " << hats << "; my_head = " << my_head << endl;
cout << "hats + my_head = " << hats + my_head << endl;
cout << "hats - my_head = " << hats - my_head << endl;
cout << "hats * my_head = " << hats * my_head << endl;
cout << "hats / my_head = " << hats / my_head << endl;
return 0;
}
``````

The code above generates the following result. ## Division Diversions

The behavior of the division operator (/) depends on the type of the operands.

If both operands are integers, C++ performs integer division.

That means any fractional part of the answer is discarded, making the result an integer.

If one or both operands are floating-point values, the fractional part is kept, making the result floating-point.

The following code illustrates how C++ division works with different types of values.

``````
#include <iostream>
int main() //from w ww  .  j  a va 2s  .  com
{
using namespace std;
cout.setf(ios_base::fixed, ios_base::floatfield);
cout << "Integer division: 9/4 = " << 9 / 4  << endl;
cout << "Floating-point division: 9.0/4.0 = ";
cout << 9.0 / 4.0 << endl;
cout << "Mixed division: 9.0/4 = " << 9.0 / 4  << endl;
cout << "double constants: 1e7/9.0 = ";
cout << 1.e7 / 9.0 <<  endl;
cout << "float constants: 1e7f/9.0f = ";
cout << 1.e7f / 9.0f <<  endl;
return 0;
}
``````

The code above generates the following result. ## The Modulus Operator

The modulus operator returns the remainder of an integer division.

The following code uses % operator to convert lbs to stone.

``````
#include <iostream>
int main() /*from  w  w  w  . j  a  v  a2  s .  co  m*/
{
using namespace std;
const int Lbs_per_stn = 14;
int lbs;

cout << "Enter your weight in pounds: ";
cin >> lbs;
int stone = lbs / Lbs_per_stn;      // whole stone
int pounds = lbs % Lbs_per_stn;     // remainder in pounds
cout << lbs << " pounds are " << stone
<< " stone, " << pounds << " pound(s).\n";
return 0;
}
``````

The code above generates the following result. ## The Increment (++) and Decrement (--) Operators

You've already seen two: the increment operator (++), and the decrement operator (--).

Each operator comes in two varieties.

The prefix version comes before the operand, as in ++x.

The postfix version comes after the operand, as in x++.

The two versions have the same effect on the operand, but they differ in terms of when they take place.

The following code demonstrates this difference for the increment operator.

``````
#include <iostream>
using std::cout;//from   w  ww.  j a  v a  2  s  .  co m
int main(){
int a = 20;
int b = 20;
cout << "a   = " << a << ":   b = " << b << "\n";
cout << "a++ = " << a++ << ": ++b = " << ++b << "\n";
cout << "a   = " << a << ":   b = " << b << "\n";
return 0;
}
``````

a++ means "use the current value of a in evaluating an expression, and then increment the value of a."

++b means "first increment the value of b and then use the new value in evaluating the expression."

The code above generates the following result. 