コード:コードブロック中にconstキーワードが再評価されるのはなぜですか?
void Test()
{
float dt = 0.3;
float playTime = 1;
while (playTime > 0.0)
{
const float delta = std::min(playTime, dt);
std::cout << delta << std::endl;
playTime -= delta;
}
}
結果:
0.3
0.3
0.3
0.1
のC++では、constキーワードはが変化しないことを意味します。 したがって、変数constを使用して定数を定数にします。
しかし、この場合、
なぜconst var、デルタは呼び出されるたびに変更できますか?
ループ開始時に新しいコードブロック(スタック領域にある)
だから、変数deltaはすでにループ実行中に存在すると思います。
しかし、デルタはあなたのコード例で決して変更されません。ループの繰り返しごとに 'std :: min'で返された値で初期化する新しい' delta'変数を作成します。 – VTT
あなたは[良い初心者の本か2つ](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を取得し、*スコープと*時間*。 –
あなたの助言のために@dudeに感謝します。私は初心者ではない。私はCS専攻で、PLクラスも取得しています。しかし、私はちょうどこの時点でキーワードconstを混同しました。 :) –