Я не понимаю, как работает следующий код:
#include "stdio.h"
int main(void) {
int i = 3;
while(i--) {
static int i = 100;
i--,
printf("%d\n", i);
}
return 0;
}
Код, скомпилированный с помощью Clang или GCC, печатает следующий вывод:
99
98
97
Может кто-нибудь объяснить мне, что здесь происходит? Похоже, что две операции выполняются в одной инструкции и более одного раза. Это поведение undefined? Я наблюдаю то же поведение в С++.