Share
Explore BrainMass

Evaluating C expressions: left to right and right to left

Let the function fun be defined as

int fun(int *k) {
*k += 4;
return 3 * (*k) - 1;
}

Suppose fun is used in a program as follows
void main() {
int I = 10, j = 10, sum1, sum2;
sum1 = (I / 2) + fun(&i);
sum2 - fun(&j) + (j / 2);
}

What are the values of sum1 and sum2

a. if the operands in the expressions are evaluated left to right?
b. If the operands in the expressions are evaluated right to left?

Solution Preview

a. sum1 = 46, sum2 = 48
sum1 = (10/2) + fun(&I);
fun(10)=>
I+=4 => I = 14
return 3*(14) -1 => return 41;

sum1 = (10/2) + 41 => sum1 = 46;

sum2 ...

Solution Summary

We use the following example to clarify how C expressions are evaluated from left to right and from right to left.

int fun(int *k) {
*k += 4;
return 3 * (*k) - 1;
}
void main() {
int I = 10, j = 10, sum1, sum2;
sum1 = (I / 2) + fun(&i);
sum2 - fun(&j) + (j / 2);
}

$2.19