Yes, they can be used in many ways. It is a storage of 1 byte, but it's usually used to represent characters.
But that's not the problem. You can safely pass <= 255 to it, but you are lying to printf by saying you are passing an int:
printf("Token = \'%c\' - to repeat
%d times tripled\n",token,times);
Either you pass an int from the beginning:
Code:
void func5(char token, int times)
{
printf("Called Func5!\n");
printf("Token = \'%c\' - to repeat %d times tripled\n",token,times);
}
Or you cast the char to an int:
Code:
void func5(char token, char times)
{
printf("Called Func5!\n");
printf("Token = \'%c\' - to repeat %d times tripled\n",token,(int)times);
}
The format specifier is there to tell printf what types you are passing to it, so you can obviously not lie. That will cause undefined behavior.