Visszaszámláló

Elkezdtem programozgatni, megpróbáltam összedobni egy egyszerű programot, ami semmi mást nem tesz, mint hogy visszaszámlál 20 másodpercig visszaszámlál mikroszekundumokat megjelenítve. Nem egy bonyolult valami, de miután lefordítottam, nem egészen úgy működött, ahogy azt elvártam. Nem áll meg nullánál, és nem jövök rá, miért. Íme a forráskód:

#include <stdio.h>
#include <sys/time.h>
void main(void)
{
	struct timeval ido;
	struct timezone zona;
	unsigned long int kezdet_sec;
	unsigned long int kezdet_usec;
	gettimeofday(&ido, &zona);
	kezdet_sec=ido.tv_sec;
	kezdet_usec=ido.tv_usec;
	while(((kezdet_sec+20-ido.tv_sec)*1000000+kezdet_usec-ido.tv_usec)>0)
	{
		gettimeofday(&ido, &zona);
		printf("%d\n", (kezdet_sec+20-ido.tv_sec)*1000000+kezdet_usec-ido.tv_usec);
	}
}

Hozzászólások

Azert nem lessz a kulonbseg kisebb mint 0 mert elojel nekuli egeszeket deklaralsz.
Azok kozti muvelet mindig "pozitivot" ad.
Amugy szokd meg hogy a main az int -el ter vissza, (exit status).

====================
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

A kiirasnal %d vonatkozik egy unsignedre. Sajna a fordito ezek szerint megsporol egy warninot. Ui. itt a hiba. Unsignedet %u -val kell kiirni. Amikor %d vel irod ki
elojel bit lesz valamelyik bitjebol a szamnak. LSB v MSB vagy ki tudja melyik..
====================
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.