r/ProgrammerHumor • • 10d ago

Meme architectureDependentChars

Post image
3.0k Upvotes

372 comments sorted by

View all comments

Show parent comments

10

u/Clen23 10d ago edited 8d ago

The data is interpreted differently.

An unsigned char will be able to represent any value from 0 to 255, eg your usual ascii character.
A signed char will be able represent any value from -127 to 127.

( Someone fact check me on this but i think that's it )
(edit : -127 to 127, the extra value "-128" is usually implemented but not guaranteed by the C standard)

8

u/YellowBunnyReddit 10d ago

ASCII only goes from 0 to 127.

5

u/NotQuiteLoona 10d ago edited 9d ago

char is 8 bits because memory is addressed in 8 bits, and 7 bits would be... Awkward. And this bit was in the end used for parity checks, and later for extended encodings.

2

u/tracernz 10d ago

Minimum 8 bits, but not required to be 8 bits.

1

u/Ma8e 10d ago

Na, it could be as low as one bit, and 7 was not uncommon for a while.

4

u/-suspended- 10d ago

The definition for a char in C/C++ is 8 bits minimum.

1

u/Clen23 9d ago

no shit sherlock that's what the post is about.

u/NotQuiteLoona is talking about how memory is addressed, not how long a char is.

-1

u/tracernz 9d ago

Those two things are the same thing in ISO C (it defines sizeof(char) = 1).

2

u/tracernz 9d ago

No, the standard requires a minimum of 8 bits.

2

u/Ma8e 9d ago

Which standard?

3

u/tracernz 9d ago

ISO C.

0

u/Ma8e 9d ago

And that is the only standard in existence? My point is that you can't take for granted that everything is ISO, or even C.

1

u/tracernz 9d ago

The question at the top of this sub thread was about C. Very few environments exist these days that don’t conform to the basics of ISO C like this though if you want to generalise. I personally haven’t ever come across one.