Bu C yasaldır ++ yazmak için?std :: time std :: srand geçerli kodu ile kullanılıyor mu?</p> <pre><code>std::srand(std::time(nullptr)); </code></pre> <p>veya bu verim tanımlanmamış davranışı yapar:
std::time
bir aritmetik tip olan bir std::time_t
verir, ancak bu belirtilmemiş dışında. Anlayışımdan, aritmetik tip, kayan nokta, tam sayı ve karakter türlerinden biridir.
std::srand
bir tohum değeri olarak bir unsigned int
alır.
Bu nedenle, sana kesinlikle bu dönüşümü gerçekleştirmek olamayacağını düşünürdüm. POSIX uyumlu sistemlerde std::time_t
'un integral olduğunu ve 00:00, 1 Ocak 1970 UTC'den bu yana geçen saniye sayısını okudum. Bu durumda, dönüştürme imzalı işaretsizden dönüştürmeyi gerektirebilir; bu, uygulama tarafından tanımlanan bir dönüşümdür, ancak Tamam olmalıdır ve daha büyük bir integralden, tohum için de iyi olan daha küçük bir tümleşik türden.
Aritmetik tür, standart dönüştürme kurallarından bir veya daha fazlasını kullanarak bir "işaretsiz int" dönüştürülebilir. –
"Rand" nin yeni 'üstbilgisi lehine kullanımdan kaldırılma sürecinde olduğunu düşünürsek, bu konudaki herhangi bir uykuyu kaybetmem. –