Mikroc – ABL electronic PIC Microcontrollers PIC16 User Manual

Page 122

Advertising
background image

Binary operator comma (

,

) has the lowest precedence and associates from left to

right, so that

a, b, c

is same as

(a, b), c

. This allows us to write sequences

with any number of expressions:

expression_1

,

expression_2

, ...

expression_n

;

this results in the left-to-right evaluation of each expression, with the value and
type of

expression_n

giving the result of the whole expression. Results of other

expressions are discarded, but their (possible) side-effect do occur.

For example:

result = (a = 5, b /= 2, c++);

/* returns preincremented value of variable c, but also

intializes a, divides b by 2, and increments c */

result = (x = 10, y = x + 3, x--, z -= x * 3 - --y);

/* returns computed value of variable z,

and also computes x and y */

Note

Do not confuse comma operator (sequence operator) with the comma punctuator
which separates elements in a function argument list and initializator lists. Mixing
the two uses of comma is legal, but you must use parentheses to distinguish them.

To avoid ambiguity with the commas in function argument and initializer lists, use
parentheses. For example,

func(i, (j = 1, j + 4), k);

calls function

func

with three arguments

(i, 5, k)

, not four.

mikroC - C Compiler for Microchip PIC microcontrollers

mikroC

making it simple...

114

MikroElektronika: Development tools - Books - Compilers

page

Advertising
This manual is related to the following products: