История изменений
Исправление monk, (текущая версия) :
x++ + ++other_x;
Здесь нет UB.
А вот быдлокодеры пишущие x++ + ++x;
...могут получить вместо ожидаемого 2*x+1 ... 2*x+2, например, всегда 0, если это будет удобно компилятору.
Например,
struct timeval tv;
unsigned long junk;
gettimeofday(&tv, NULL);
srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk);
struct timeval tv;
unsigned long junk;
gettimeofday(&tv, NULL);
getpid();
srandom(0);
Так как результат вычисления с неинициализированной переменной — UB.
Исходная версия monk, :
x++ + ++other_x;
Здесь нет UB.
А вот быдлокодеры пишущие x++ + ++x;
...могут получить вместо ожидаемого 2*x+1 ... 2*x+2, например, всегда 0, если это будет удобно компилятору.
Например,
struct timeval tv;
unsigned long junk;
gettimeofday(&tv, NULL);
srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk);
struct timeval tv;
unsigned long junk;
gettimeofday(&tv, NULL);
srandom(0);
Так как результат вычисления с неинициализированной переменной — UB.