c
Types
Functions
/* function prototype */
void foobar(int m, int n); /* <-- parameters or formal arguments */
/* function call */
foobar(3, 4); /* arguments or actual arguments */
Bitwise operations
Left shift (<<) fills vacated bits with zeros. Right shift (>>) fills vacated bits with zeros if the lefthand operand is unsigned. If the lefthand operand is signed, the vacated bits are filled with the sign bits on some machines ("arithmetic shift") or zeros ("logical shift") on others. [1]
=> Using an unsigned integer will ensure that the right hand shift will fill the vacated bits with 0's.
Order of evaluation
The order of evaluation of f() and g() in the following statement is not defined [2]:
x = f() + g(); /* f may be evaluated before g or vice versa */
Consequently, this is wrong:
printf("%d %d\n", ++n, power(2, n)); /* WRONG */
[1]: K&R, pg 49 [2]: K&R, pg 53