Habe da ein Problem meine Variable ist mit unsigned int z=0; deklariert

Das heißt es müsste eigentlich von 0 - 65535 zählen.

Aber.......

Hier ist mein Code
Code:
#include <stdbool.h>
#include <stdio.h> 
#include <asuro.h>
	int main(void)
{
	Init();
	char zC[2];
	unsigned char umschaltpunkt = 0;
	int t = 0;
	unsigned int z=0;
/*******************************************************************************************/
while( 1 )
{
	if(Gettime() > umschaltpunkt)       // Umschaltzeitpunkt überschritten?
	{
	umschaltpunkt += 10000;              // neuen Umschaltzeitpunkt festlegen 
	z++;
	}

	if (umschaltpunkt > 10000)
		umschaltpunkt = 0;

if (PollSwitch() == 1) 
	z=0;


if (PollSwitch() == 2) 
	z = 90;

if (PollSwitch() == 4) 
	z = 32750;

if (PollSwitch() == 32) 
	z = 990;

/**********************************************************************/
		sprintf(zC, "%d", z);		//Übertragen
		SerWrite(zC, 6);			//Übertragen
		SerWrite (" zC\n\r", 5);	//Übertragen
	for 
		(t=0; t< 40; t++)			//Übertragen
        {							//Übertragen
        Sleep (72);					//Übertragen
        }							//Übertragen
/***********************************************************************/


		
}
	return 0;
}
Hier ist die ausgabe von Hyper T.
Code:
22760 zC
32761 zC
32762 zC
32763 zC
32764 zC
32765 zC
32766 zC
32767 zC
-32768 zC
-32767 zC
-32766 zC
-32765 zC
-32764 zC
-32763 zC
Hat da jemand eienn Idee wieso er nicht bis 65... zählt

habe "z" auch schon mit int deklariert aber da ist es zählt er auch so


Lg