我想知道如何以可移植的方式可靠地确定字符的大小。不能使用 AFAIK sizeof(char) 因为它总是产生 1,即使在字节有 16 位甚至更多或更少的系统上也是如此。
例如,在处理位时,您需要知道它到底有多大,我想知道这段代码是否会给出字符的实际大小,而与编译器的想法无关。 IMO 指针必须由编译器增加到正确的大小,所以我们应该有正确的值。我的看法是否正确,或者指针算法可能存在一些隐藏的问题,这会在某些系统上产生错误的结果?
int sizeOfChar()
{
char *p = 0;
p++;
int size_of_char = (int)p;
return size_of_char;
}
最佳答案
有一个 CHAR_BIT
<limits.h>
中定义的宏其评估完全符合其名称的含义。
IMO the pointer has to be increased by the compiler to the correct size, so we should have the correct value
不,因为指针运算是根据 sizeof(T)
定义的(指针目标类型)和 sizeof
运算符产生以字节为单位的大小。 char
始终正好是一个字节长,因此您的代码将始终产生 NULL
指针加一(可能不是数值 1
,因为 NULL
不需要为 0)。
关于c++ - 可靠地确定 char 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16562140/