Re: C-Query

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Shashidhara S Bapat wrote:

Hi All,
I have doubts in the following C program:  (I used gcc compiler)

>>>
#include <stdio.h>

int main()
{
 int i, j,  b;

 i = 12, j = 1;
 b = ++i + ++i + i++;

Refrain from using such expressions as they are Undefined in ANSI. You Cannot be sure of the answer (i.e. it can vary from compiler to compiler and hence is not portable).


 printf("%d\n", b);

 i = 12, j = 1;
 b = j++ + ++j;

Read Above

 printf("%d\n", b);

 i = 12, j = 1;
 b = ++i + ++i + i++ + j++ + ++j ;

RE-READ above

 printf("%d\n", b);

 return 0;
}

and the output of the code is :
42
4
45.

..and my question is why do we get 42 in the first printf? (I was expecting 41 (13+14+14) O:-) ) and in the second printf why it isn't 3?
(If it is because of the usage of stack (and/or tree) during the evaluation of those expressions, why dont we get 46 in the 3rd printf (42 + 4) ?).


Does it depend on the compiler?
Please let me know abt the reason.

UNDEFINED BEHAVIOUR

thanks in advance.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux