[英]Why the static_cast on time(0) on this code
我正在閱讀一本關於C ++的初學者書,它有這個例子:
int main()
{
srand(static_cast<unsigned int>(time(0))); //seed random number generator
int randomNumber = rand(); //generate random number
int die = (randomNumber % 6) + 1; // get a number between 1 and 6
cout << "You rolled a " << die << endl;
return 0;
}
我只是想知道演員的目的。 我試過了
cout << time(0);
和
cout << static_cast<unsigned int>(time(0));
它產生相同的結果,所以我不確定為什么代碼中的強制轉換。
std::time
返回的類型, std::time_t
是一個實現定義的數字類型。
數值類型可以隱式地相互轉換,所以srand(time(0));
保證定義良好,但在某些實現中, std::time_t
可能是一個類型,其所有值都無法用unsigned int
表示,因此一個有用的編譯器可能會產生一個關於可能是偶然的縮小轉換的警告。
顯式靜態轉換告訴編譯器轉換是有意的,因此無論std::time_t
如何定義,都不會產生警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.