【发布时间】:2013-05-15 10:02:52
【问题描述】:
我想知道如何以便携的方式可靠地确定字符的大小。 AFAIK sizeof(char) 不能使用,因为它总是产生 1,即使在字节具有 16 位或更多或更少的系统上也是如此。
例如,在处理位时,您需要确切地知道它有多大,我想知道这段代码是否会给出一个字符的实际大小,而与编译器的想法无关。 IMO 指针必须由编译器增加到正确的大小,所以我们应该有正确的值。我在这方面是对的,还是指针算法可能存在一些隐藏的问题,在某些系统上也会产生错误的结果?
int sizeOfChar()
{
char *p = 0;
p++;
int size_of_char = (int)p;
return size_of_char;
}
【问题讨论】:
-
CHAR_BIT或CHAR_MAX是简单的可移植方法。 -
还有一个
sizeof运算符,仅供参考sizeof(char) -
sizeof 并不总是有用的,因为在某些情况下您需要知道 char 是 8 位还是其他。 Sizeof 不提供此信息。
-
@abasu
sizeof(char) == 1根据定义。即使(在某些机器上)char可以容纳多个字节。我知道,这很奇怪。 -
@leemes,是的,这就是为什么我想知道如何可靠地获取位数信息,并想出了我的代码。 :) 好吧,我现在放弃它并使用limits.h 中的定义。我一直不明白为什么标准没有为您需要的情况添加至少具有固定位的数据类型。