-3

This code gives me result 14. But I hope that result will be 12. so Why did this program give me this result?

#include <stdio.h>

int main()
{
 int i = 5;
 int a = ++i + ++i;
 printf("%d",a);

 return 0;
 }
  • 13 would yet have been an alternative answer: `(++i) /* 7 */ + (++i) /* 6 */`, assuming compiler evaluates operands from right to left... – Aconcagua May 06 '22 at 14:17
  • It's undefined behaviour anyway, but imagine how you would translate `a = 12; b = 10; c = ++a + ++d` in *assembler* on typical modern hardware (pseudo variant following...): `MOV ra 12; MOV rb 10; ADD ra ra 1; ADD rb rb 1; ADD rc ra rb;` Now if you only use `ra`??? – Aconcagua May 06 '22 at 14:25
  • 1
    When I ran this, i got Nasal Demons, and my hard drive was reformatted. Perhaps that is a clue? – abelenky May 06 '22 at 14:42

0 Answers0