В с++ есть некоторое количество случаев когда, не определен точный порядок операций и в зависимости от реализации компилятора или стандарта можно получить разный результат. Рассмотрим простой пример: #include <iostream>
int main()
{
int i = 1;
printf("%d, %d\n", i++, i++);
return 0;
} Вопрос простой, что будет выведено в результате работы программы? printf является функцией, соответственно очередность выполнения выражений в аргументах не определена, можно получить результат: 1, 2 или 2, 1 и даже 1, 1 Этот эксперимент можно повторить на платформе https://godbolt.org Результат 2, 1 Результат 1, 2 Причем будет выдано предупреждение: warning: multiple unsequenced modifications to 'i' [-Wunsequenced] -Wunsequenced - возникает, когда в одном выражении происходит несколько изменений одной и той же переменной, причем порядок их выполнения не определен. В C/C++ стандарт не гарантирует, в каком порядке будут вычисляться такие операции, что может привести к неожиданным результатам. Получи