PDA

View Full Version : [c++] Perchè fa così ?


Alex_87_xelA
10-12-2008, 21:41
Ciao ragazzi ... guardate questo programmino e provatelo !!!
guardate le 2 differenze e provatele !!!

le righe in grassetto --- una volta provate il programma con una ed una volta con l'altra ... dovrebbero fare la stessa identica cosa ... ma !!! GUARDATE VOI !!!

me lo sapete spiegare il motivo ?


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void sleep( clock_t wait );

void main( void )
{
long i = 150000000;
clock_t start, finish;
double duration;

printf( "Delay for 1 seconds\n" );
sleep( (clock_t)1 * CLOCKS_PER_SEC );
printf( "Done!\n" );

printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
;
finish = clock();
duration = double(finish - start) / CLOCKS_PER_SEC;
duration = double(finish) - double(start) / CLOCKS_PER_SEC;

printf( "%4.2f millesimi di seconds\n", duration );
}

void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}



SCUSATE è C non C++ errore MIO !!!:muro:

fero86
10-12-2008, 22:13
a me quelle due righe non sembrano affatto equivalenti: é chiaro che l'operator di divisione ha la precedenza su quello di sottrazione.

Alex_87_xelA
10-12-2008, 22:36
a me quelle due righe non sembrano affatto equivalenti: é chiaro che l'operator di divisione ha la precedenza su quello di sottrazione.

:D GIUSTO !!!

banryu79
11-12-2008, 08:39
:D GIUSTO !!!

Per evitare di confonderti, in futuro, potresti abituati a racchiudere tra parentesi il cast, così:

...
finish = clock();
duration = (double) (finish - start) / CLOCKS_PER_SEC;
duration = (double) finish - (double) start / CLOCKS_PER_SEC;

printf( "%4.2f millesimi di seconds\n", duration );
...

La differenza tra le due righe salta all'occhio un poco di più che con la forma precedente, secondo me.

Alex_87_xelA
11-12-2008, 11:12
Per evitare di confonderti, in futuro, potresti abituati a racchiudere tra parentesi il cast, così:

...
finish = clock();
duration = (double) (finish - start) / CLOCKS_PER_SEC;
duration = (double) finish - (double) start / CLOCKS_PER_SEC;

printf( "%4.2f millesimi di seconds\n", duration );
...

La differenza tra le due righe salta all'occhio un poco di più che con la forma precedente, secondo me.

vi ringrazzio a tutti ... era stata solo una mia disattenzione (stavo già dormendo :D)

GRAZIE comunque !!!