3 ms·
sizeof(char) has to be 1, but char doesn't have to be 1 byte in size. It's more correct to say that sizeof(foo) returns a result relative to sizeof(char).
by swolchok 10y ago
sizeof(char) has to be 1, but char doesn't have to be 1 byte in size. It's more correct to say that sizeof(foo) returns a result relative to sizeof(char).
- breadbox 10y agochar doesn't have to be 8 bits in size, true, but C basically doesn't give you any way to address memory smaller than a char.
- boomlinde 10y ago> C basically doesn't give you any way to address memory smaller than a char It does, via bit-fields.
- breadbox 10y agoOr via the bitwise operators. Still, it is not possible to take the address of a bitfield.
- boomlinde 10y agoThe difference may be 100% semantics, but when I am using a bit field, I am addressing the particular bits I am interested in via a name, and when I am shifting and masking bits, I am directly manipulating a piece of memory until its value represents the bits that I am interested in.
- pksadiq 10y ago> but char doesn't have to be 1 byte in size It is, but not required to be an octect. Quoting from the standard (n1570, 3.6): byte ==== addressable unit of data storage large enough to hold any member of the basic character set of the execution environment Later in a comment (page 44 in pdf, note 49): A byte contains CHAR_BIT bits