ループを通した操作の回数を1秒間に計算しようとしました。 これは私がループを計算し、繰り返しを行うたびに時間をチェックする時を思い出します。 私のアイデア - この2つの時代の秒数が異なる場合、ループ反復が何回行われたかを表示します。ここで参照のエラーC++
は私のコードです:
#include <ctime>
int main()
{
// For timing
time_t t, tstep;
struct tm* now, *step;
// this time will change at every iteration
t = time(0);
now = localtime(&t);
// save time of the start moment
tstep = t;
step = localtime(&tstep);
// counter of loop cycles
int count = 0;
for (size_t i = 0; i < 1e100 ; i++)
{
// ... here is some calculations
t = time(0);
now = localtime(&t);
count++;
if (now->tm_sec != step->tm_sec)
{
tstep = time(0);
step = localtime(&tstep);
//printf("number of lines %i \n", count);
count = 0;
}
}
return 0;
}
問題は何です:私はnow
step
を更新するたびに同じ値になりました! t
とtstep
は異なります!
参照のためにこのように見えます:tstep = t
を使用した場合、これはこの変数のアドレスがt
の両方を指していることを意味します。したがって、t
を変更すると、now
とtstep
が変更されます。
この問題を解決するにはどうすればよいですか? t
の値をstep
にコピーするにはどうすればよいですか?それとも別の実際の方法がありますか?
downvoteの場合、理由を説明できますか? –
"このような_Looksは参考文献のためです:"あなたが提示されたコードのどこにでも参照を使用していません**。 –
また、これは[Minimal、Complete、Verifiableの例](https://stackoverflow.com/help/mcve)ではありません。 – kim366