PDA

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


Alex_87_xelA
10-12-2008, 22: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, 23: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, 23: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, 09: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, 12: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 !!!

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.