What is the size of a char in the C programming language according to the standard?

The story behind the answer

According to the C language standard, a char has a size of exactly 1 byte. This does not necessarily mean that the byte contains exactly 8 bits: the standard defines the number of bits in a byte through CHAR_BIT, which must be at least 8.

In C, sizeof(char) is guaranteed to equal 1, making char the smallest addressable unit of storage. The standard deliberately leaves the physical representation flexible so C can work across many kinds of processors and systems. On modern mainstream computers, CHAR_BIT is almost always 8, so a char is typically an 8-bit value.

A common mix-up is confusing a C byte with the larger memory units used informally in computing. A char is not automatically 4 or 8 bytes, and sizeof(char) is never greater than 1. Other types, such as int or double, may vary in size depending on the implementation.

The char type is also used to represent members of C’s basic character set. Whether plain char behaves as signed or unsigned is implementation-defined, while signed char and unsigned char are distinct explicitly chosen types.

Source: Wikipedia · fact-checked Aug. 2026

Add question to a list

Choose a list to keep this question in: