2017-07-20 7 views
-2

それは正常に動作します:static_castが機能しません。 Cスタイルのキャスト作品。 static_castを修復するには?

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

それは動作しません:

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

なぜ?それを修正するには?

+1

これらはまったく同等ではありません。あなたの 'static_cast <>()'の例は、Cバージョンが 'rand()'の出力のみをキャストしている間に、分割式全体をキャストしています。 – genpfault

+2

優先順位。最初のスニペットに 'rand()'だけがキャストされます。 – Quentin

+0

ああ、ありがとう! =) –

答えて

0
(double)rand()/RAND_MAX 

ここでは、キャストはrand()です。だからあなたのコードでは、それはあまりにもそのようにする必要があります:

static_cast<double>(rand())/RAND_MAX 

あなたの例では、あなたがdoubleにそれをキャストし、その後2 int秒を割るました。

関連する問題