Last Minute C Programming Arithmetic Operators Tutorial

c arithmetic operators tutorial

C language comes with Arithmetic Operators like Plus, Minus, Multiplication, Division and Modulo Division. One more operator '=', also called Assignment operator is also present.

Arithmetic operators are used to work with integers and real numbers.

Study C basics and keywords before this tutorial.

Arithmetic operators of C Language

SNO Operator Description
1 + Addition Operator
2 - Subtraction Operator
3 * Multiplication Operator
4 / Multiplication Operator
5 % Modulo Division Operator

Example 1:

int main()
{
  int a=5, b=10;
  int c;
  // = is Assignment operator
  c = a + b;
  printf("%d ", c);
  
  c = a - b;
  printf("%d ", c);
  
  c = a*b;
  printf("%d ", c);
  
  c = b/a;
  printf("%d ",c);

  c = a%b; //modulo division or remainder operator
  printf("%d", c);
  
  return 0;
}
//output:  15  -5  50  2  5

Assignment Operator allows only right side value to be assigned to the left side variable. In the above program, left side variable 'C' gets the value of right side operation like addition, subtraction etc.

Note: Modulo division operator works only with whole numbers like integers.

Note: Arithmetic operators can also be applied on char variables as characters are converted to their respective ASCII codes before arithmetic operation.

Integer and Float Conversions

When you are working with integers and float (Real) numbers, some number conversions are applied.

  1. Result of int and int is integer only. Use %d format specifier. Use an int variable to hold data.
  2. Result of float and float is float only. Use %f format specifier. Use a float variable to hold data.
  3. Result of int and float is float only. Use %f format specifier. Use a float variable to hold data.
  4. If you use %d instead of %f, precision data will be lost.
  5. If you are working with long, double and long double data types, result of an arithmetic operation contains higher data type value. For example, arithmetic operation with short and int is always int.

Example 1:

int main()
{
  int a=5, b=10;
  float c = 12.5f, d = 10.5f;
  
  //int + int
  printf("%d, ", a+b);
  
  //float + float
  printf("%f, ", c+d);
  
  //int + float
  printf("%f, ", a + c);
  
  //int + float
  printf("%d", a + c);
  //%d truncates extra data i.e precision
  
  return 0;
}
//output: 15, 23, 17.500000, 17

Example 2:

SNO Arithmetic Operation Result
1. 9/2 4
2. 9/2.0 4.5
3. 9.0/2 4.5
4. 9.0/2.0 4.5
5. 2/9 0
6. 2/9.0 0.22
7. 2.0/9 0.22
8.  2.0/9.0 0.22

Note: To avoid losing of precision data with division operator, multiply the numerator or denominator with 1.0f or 1.0 double value. Use parantheses ( ) operator to group all numerator or denominator expressions.

int main()
{
  int a=10, b=4;
  float c = (1.0f * a) / b;
  //multiply with 1.0f or 1.0
  printf("%f", c);
    
  return 0;
}
//output: 2.500000

C Operator Precedence or Priority or Hierarchy

Each operator in C has a precedence or priority or hierarchy. Operator precedence is useful to evaluate arithmetic expressions with operators of different priority. Operator priority decides which operator and operands should be evaluated first.

Note: Constants on the left and right side of operator are called Operands.

Example 1:

int main()
{
  int a=2, b=3, c=8;
  int d=0;
  d = a + b * c;
  printf("%d", d);
  
  return 9;
}
//output:
// 2 + (3*8)
// 2 + 24
// 26 is the output
//'*' operator has higher priority
// wrong = (a+b)*c

C Operator Precedence Chart

Priority Operator Description
1st *, /, % Multiplication, Division, Modulo Division
2nd +, - Addition, Subtraction
3rd = Assignment

Example 2:

int main()
{
  float abc = 5 + 10 / 2 * 5 - 2 % 5;
  printf("Result=%f", abc);
  
  return 0;
}
//Evaluation steps
//10 / 2 * 5 left to right processing
//5 + 25 - 2 left to right processing
// START
// 5 + (10 / 2) * 5 - 2 % 5
// 5 + 5 * 5 - 2 % 5
// 5 + 25 - 2 % 5
// 5 + 25 - 2
// 30 - 2
// 28
//END

C Operator Associativity

C operator associativity deals with the problem of associating an operand to either left operator or right operator. When two equal priority operators are encountered in an expression, this Operator associativity is used to solve deadlock. Usually arithmetic operators follow Left to Right Associativity. Equals to '=' operator follows Right to Left Associativity.

Example 1:

int d = 3 + 4 + 5;

Now as per Left to Associativity of arithmetic operators, 4 belongs to the left side + or first + operator. So the expression becomes (3+4) + 5. Next, the result of expression is added to 5 like (7)+5.

Now as per Right to Left Associativity of Equals to Operator, right side value is assigned to left side variable. So the variable d now holds a value of 12.

Example 2

float fd = 3 + 12 / 5;

In the code above, there are two operators + and /. As Division / operator has higher priority, operand 12 is associated with /.  instead of + on the left side. So 12/5 evaluates to 2. fd = 3 + 2 = 5 now.

C Online Tests on Arithmetic Operators

1. C Arithmetic Operators Online Test 1
2. C Arithmetic Operators Online Test 2