除位字段外的所有类型都占用整数个“字节”,并且 sizeof 返回该数字。一个无符号字符占用1 个“字节”,所以 sizeof(unsigned char) 总是返回 1。对吗?
但是,无符号字符是否总是填充“字节”,或者 CHAR_BITS 是否可以小于“字节”中的位数或 UCHAR_MAX 小于(2 的 CHAR_BITS 次方)- 1?如果 unsigned char 不能保存它的位数也允许的所有值,那么使用 unsigned char 复制其他类型如何工作?
int src = -1, dest;
size_t i;
for (i = 0; i < sizeof dest; i++) {
((unsigned char *) &dest)[i] = ((unsigned char *) &src)[i];
}