- 1
- 2
- 3
- 4
- 5
__int64 timestamp;
// Get nanoseconds since 1601
timestamp = rand() + (((__int64)rand()) << 32);
timestamp /= 100;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+154
__int64 timestamp;
// Get nanoseconds since 1601
timestamp = rand() + (((__int64)rand()) << 32);
timestamp /= 100;
очень вольная работа со временем...
чече?
позор всем нам!!!
Пьер Ферма же родился!
Я, например, если надо было бы к чему-то придраться, придрался бы к сдвигу на 32: в общем случае нет гарантии, что `rand()` генерирует 32 бита. Он может генерировать и намного меньше, т.е. танцевать надо было бы от `RAND_MAX`. А в остальном способ комбинации нескольких вызовов `rand()` - вполне приемлем.
А то, что генерируется якобы именно временной интервал... так на это приведенный код никак не завязан. Хоть временной интервал, хоть число цыплят по осени - какая в данном случае разница?
И формируется итог из старших и младших 4х байтовых последовательностей.
В данном случае, я хотел сказать, что не важно сколько бит генерит rand(), ну будут кое-где нулики, ничего страшного в этом нет. А если уж хочется все биты в int64 сделать псевдослучайными, тогда конечно надо учесть разрядность rand().
Относительная говнокодовость тут в использовании знакового типа и в, еще раз, завязке на 32 бита.