It is guaranteed that sizeof(char), sizeof(signed char) and sizeof(unsigned char) all equal 1. Applying sizeof to any other fundamental type returns an implementation-defined value. In particular, sizeof(bool) and sizeof(wchar_t) need not return 1 because their underlying types may be larger than char.