Sololearn: Learn to Code
New course! Every coder should learn Generative AI!
Try a free lesson
+ 13
Hima The answer is infact undefined, and depends on the compiler being used. Some compilers will result in 16 and 20, while others will produce 16 and 25. When macro swaps the below expression is generates (++x)*(++x) The evaluation of the pre-increment operation ++x is where the undefined behavior in C comes in. With some compilers, the macro will reduce to (4)*(5), while in other cases, it will be evaluated as (5)*(5). In this case the compiler last evaluated value 5 is assign to a and which is why the output is coming 25
19th Nov 2019, 12:47 PM
GAWEN STEASY
GAWEN STEASY - avatar