Char is 1 Byte. There are three distinct types of char in c99 standard.
char , signed char,unsigned char
default char can be either signed or unsigned. It is implementation specific.For gcc, the default is signed.
In decimal notation value of a signed char can vary from $+(2^{n-1} -1)$ to $-(2^{n-1})$
which is (+127 to -128).
So after ch becomes 127 (01111111) then ch++ makes the value to (10000000) = -128 (2's complement form)
=> ch values rotate between (127 to -128). While condition always satisfied.
=> INF loop. nothing printed.
--------------------------------
In gcc we can use -funsigned-char flag during compilation time which makes default char unsigned.
Now char range becomes (0 to +255) i.e. if ch = 255 at some point, ch++ makes ch=0
=> ch values rotate between (0 to +255), While condition always satisfied.
=> INF loop. nothing printed.
--------------------------------
conclusion : irrespective of implementation of default char sign (signed/unsigned). Nothing will be printed.