Your implementation must add a 1 in the most significant bit when right-shifting a negative number (the operator's behaviour is implementation defined, so usually depends on which CPU instructions are available).
0xA0 = 1010 0000 binary
The first time you sample c & 1 - the least significant bit - it's actually a 0. Then...
c = (c >> 1)
...shifts this to 1101 0000, then 1110 1000, 1111 0111, 1111 1011, 1111 1101, 1111 1110, 1111 1111 - which is then stable and never changes further. Hence, you keep printing 1s and never satisfy the termination condition of c == 0.
When I print the loop it never breaks and it only print ones? How come?
Well, it will have printed a few 0s at the very start, but your screen's probably scrolled past them in a blink and thereafter you only see the 1s.
c & 1).