2017-07-20 2 views
-2

Il fonctionne très bien:static_cast ne fonctionne pas. C cast travaux de style. Comment réparer static_cast?

srand(time(NULL)); 
cout<<(double)rand()/RAND_MAX<<endl; 

Il ne fonctionne pas:

srand(time(NULL)); 
cout<<static_cast<double>(rand()/RAND_MAX)<<endl; 

Pourquoi? Comment le réparer?

+1

Ceux-ci ne sont même pas un peu équivalents. Votre exemple 'static_cast <>()' est en train de convertir l'expression entière de la division tandis que la version C ne fait que produire la sortie 'rand()'. – genpfault

+2

Préséance. Seul 'rand()' est casté dans le premier extrait. – Quentin

+0

Ah ok, merci! =) –

Répondre

0
(double)rand()/RAND_MAX 

Ici, vous ne lancez que le numéro rand(). Donc, dans votre code, il devrait être comme ça aussi:

static_cast<double>(rand())/RAND_MAX 

Dans votre exemple, vous divisez deux int s puis coulée dans double.