I know a fair bit of C but
There are a lot of subtleties that you only pick up with experience. I was pleased to find a blog entry by a bloke Tom M on “Everything I wish I knew when learning C” which is well worth a read.
I’m not going to copy anything from it except for this little snippet below one below. For the rest, you’ll have to read his blog post.
All other integer types default to signed, but bare
char can be signed or unsigned, depending on the platform.
As said char is an integer type but unless you are doing stuff like ++ or — when its value can overflow according to being signed or unsigned, it’s not really a problem. And unless you are writing code that runs on wildly differing platforms, you can probably safely assume that a char is the same as a byte and has 8 bits. On those other platforms, I’d suggest you read the answers to this Stackoverflow question.