J'essaie de calculer le nombre d'opérations effectuées dans la boucle pendant 1 sec. Pour cela, je me souviens du moment où j'ai commencé à calculer la boucle et à vérifier l'heure à chaque itération. Mon idée - quand les nombres de secondes sont différents pour ces deux moments, j'imprime combien d'itérations de boucles ont été faites.Erreur avec une référence C++
Voici mon code:
#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;
}
Quel est le problème: chaque fois que je rafraîchisse now
step
est devenu la même valeur! Alors que t
et tstep
sont les différents!
On dirait que c'est à cause de références: peut-être quand j'utilise tstep = t
cela signifie que les adresses de ces variables se réfèrent à t
les deux. Donc, en changeant t
change now
et tstep
.
Comment résoudre ce problème? Comment copier juste la valeur de t
à step
? Ou il y a une autre manière réelle?
Si vous downvote, pouvez-vous expliquer pourquoi? –
"_Comme ceci, c'est à cause de references_" Vous ** n'utilisez ** pas de références n'importe où dans le code présenté. –
En outre, ce n'est pas un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) – kim366