Characters are encoded as integers, usually 8-bit by default in C. Some are defined by ASCII and others depend on your OS, screen font, etc.
The *
character has code 42. If you enter 55, your code computes 42*55=2310 and uses the low 8 bits of this value, which is 6, as the character to print. Character 6 is ACK which is not defined as a printable character by ASCII, but it sounds like your system is using something like the legacy IBM code page 437, in which character 6 displays as the spade symbol ♠.
Multiplying a character code by an integer is not a very useful thing to do. I’m not sure what you were expecting to accomplish with this program. If you thought it would print 55 copies of the *
character, like Perl’s x
operator, well it doesn’t. C has no built-in way to do that; you would just write a loop that prints *
once per iteration, and iterates 55 times.
solved Why does multiplying a character produce other seemingly random characters?