Drei mal hintereinander vermute ich mal zur Entprellung des Tasters.

Und solange der von einer Funktion zurückgegebene Wert <= 255 (bei unsigned) ist, ist es kein Problem, einen int nach char zu casten. Bei Werten > 255 gibt es allerdings einen Überlauf.