My Question is regarding the code written below. If you look at the function called "function"
when 'a' is passed to the function and the function "function" is evaluated. I was wondering what the return value would be for the first pass when (a =2), my questin specifcaly is that do we increment b and c since its post? otherwise if they had been pre increment would the value of the expression 'a1+b+c' be any different ? thanks.

``````int function( int a1 )
{
int b = 0;
int c = 0;
b++;
c++;
return ( a1 + b + c );
}

int main() /*main function*/
{
int a = 2, i;

for( i=0; i<3; i++ )
printf( "%d ", function(a) );
return 0;
}``````
2
Contributors
3
Replies
4
Views
10 Years
Discussion Span
Last Post by Ancient Dragon

>>otherwise if they had been pre increment would the value of the expression 'a1+b+c' be any different
No they are the same. pre and post increment only has any real difference if used in an expression of some sort. For example

``````int a = 1;

foo(++a);
foo(a++);``````

In the code above the value of a inside function foo() will be different because in the first instance the value of a is first incrmeneted then that value is passed to foo(). In the second instance the current value of a is passed to foo() then incremented after foo() returns to its caller.

This goes the same for a "For Loop"??, the increment expression, if its pre/post wouldnt it be the same since its being evaluated after the statements of the loop have been executed?

>>otherwise if they had been pre increment would the value of the expression 'a1+b+c' be any different
No they are the same. pre and post increment only has any real difference if used in an expression of some sort. For example

``````int a = 1;

foo(++a);
foo(a++);``````

In the code above the value of a inside function foo() will be different because in the first instance the value of a is first incrmeneted then that value is passed to foo(). In the second instance the current value of a is passed to foo() then incremented after foo() returns to its caller.

>>This goes the same for a "For Loop"?
Yes, both these have the same identical result.

``````int i;
for(i = 0; i < 10; i++)
and
for(i = 0; i < 10; ++i)``````

These two, however, are different

``````int i;
for(i = 0; i++ < 10;)
and
for(i = 0; ++i < 10;)``````
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.