Я пропускаю заголовочные файлы и освобождаю основной...
Код 1:-
int a = 5 , c ;
c = a++ + ++a + a++;
a = 5;
printf("%d %d",a++ + ++a + a++ , c);
___________________________________________________
Выводы:-
TCC:- (Да Borlands 3.0 или как там он называется один для DOS-синей среды)
19 18
19 = как ? 5+7+7, и если да (определенно по сравнению с выходом GCC), то почему не 18?
18 = 6+6+6 ? (код присваивания c эквивалентен
a++;
c=a+a+a;
a++;
a++;) правильно ?
и почему 19 18 ? два разных значения для одного и того же кода?
GCC:-
19 19
19 оба 5+7+7 ? имеет смысл..
Теперь код 2:-
int a = 5 , c ;
c = ++a + ++a + ++a;
a = 5;
printf("%d %d",++a + ++a + ++a, c);
_________________________________________________
TCC:-
24 24
24 с той же логикой 8+8+8(c код присваивания, эквивалентный
a++;
a++;
a++;
c=a+a+ а;
) и а = 8 ;
GCC:-
22 22
22 ? как ? по обычной логике 6 + 7 + 8 = 21 но на выходе 22 ?
тогда 6+8+8 и если да то как ?