# C Programming: Integer Expressions and Precedence of Operators

## Integer expressions

In C programming, an integer constant (e.g. 23, 0, -245) is the simplest example of an integer *expression*. However, most of the time, we write integer expressions by combining constants and variables with the following *arithmetic operators*:

- add

- subtract

* multiply

/ divide

% find remainder

For example, suppose we have the following declaration:

**int a, b, c;**

then the following are all valid expressions:

a + 39

a + b - c * 2

b % 10 //the remainder when b is divided by 10

c + (a * 2 + b * 2) / 2

The operators +, - and * all give the expected results. However, / performs *integer division*; if there is any remainder, it is thrown away. We say integer division *truncates*. Thus 19 / 5 gives the value 3; the remainder 4 is discarded.

But what is the value of -19 / 5? The answer here is –3. The rule is that, in C, integer division truncates *towards* zero. Since the exact value of –19 ÷ 5 is –3.8, truncating towards zero gives –3.

The % operator gives the *remainder* when one integer is divided by another; for example,

19 % 5 evaluates to 4;

j % 7 gives the remainder when j is divided by 7;

You can use it to test, for instance, if a number **j** is even or odd. If **j % 2** is 0 then **j** is even; if **j % 2** is 1, **j** is odd.

## Precedence of operators

C evaluates an expression based on the usual *precedence* of operators: multiplication and division are done *before* addition and subtraction. We say that multiplication and division have *higher precedence* than addition and subtraction. For example, the expression

5 + 3 * 4

is evaluated by *first* multiplying 3 by 4 (giving 12) and *then* adding 5 to 12, giving 17 as the value of the expression.

As usual, we can use brackets to force the evaluation of an expression in the order we want. For example,

(5 + 3) * 4

first adds 5 and 3 (giving 8), and then multiplies 8 by 4, giving 32.

When two operators which have the *same* precedence appear in an expression, they are evaluated *from left to right*, unless specified otherwise by brackets. For example,

24 / 4 * 2

is evaluated as

(24 / 4) * 2

(giving 12) and

12 - 7 + 3

is evaluated as

(12 - 7) + 3

giving 8. However,

24 / (4 * 2)

is evaluated with the multiplication done first, giving 3, and

12 - (7 + 3)

is evaluated with the addition done first, giving 2.

In C, the remainder operator % has the same precedence as multiplication (*) and division (/).

**Exercise**: What is printed by the following program? Verify your answer by typing and running the program. Note: use greater than and less than signs to properly enclose ‘stdio.h’ instead of parantheses.

#include (stdio.h) main() { int a = 15: int b = 24; printf("%d %d\n", b - a + 7,b - (a + 7)); printf("%d %d\n", b - a - 4, b - (a - 4)); printf("%d %d\n", b % a / 2, b % (a / 2)); printf("%d %d\n", b * a / 2, b * (a / 2)); printf("%d %d\n", b / 2 * a, b / (2 * a)); } }

## References

C Programming – A Beginner’s Course

Related programming references

## This post is part of the series: C Programming for Beginners

A straightforward introduction to Programming in C for people with no previous programing experience.

- C Programming For Beginners - Part 1
- C Programming For Beginners - Part 2
- C Programming for Beginners – Part 3
- C Programming for Beginners – Part 4
- C Programming For Beginners - Part 5
- C Programming For Beginners - Part 6
- C Programming For Beginners - Data Types
- C Programming For Beginners - Part 8
- C Programming For Beginners - Part 9
- C Programming For Beginners - Part 10
- C Programming For Beginners - Part 11
- C Programming For Beginners - Part 12
- C Programming For Beginners - Part 13
- C Programming For Beginners - Part 14
- C Programming For Beginners - Integer Data Types
- C Programming for Beginners - Part 16
- C Programming For Beginners - Integer Expressions, Operators and Precedence
- C Programming For Beginners - Part 18
- C Programming For Beginners - Printing Double and Float
- C Programming For Beginners - Mixing double, float and int