【发布时间】:2011-06-27 04:01:17
【问题描述】:
我读过使用short 与int 实际上会导致编译器效率低下,因为它需要使用int 数据类型,而不管由于C 整数提升。对 16 位微处理器来说是这样吗?
另一个问题:如果我有一个 1 和 0 的数组,在这个 16 位微处理器中使用 uint8_t 或 unsigned char 是最有效的吗?还是将其转换回int仍然存在问题..
请帮我清理一下我脑海中的这个泥泞问题。谢谢!
【问题讨论】:
-
您还没有告诉我们您在谈论什么特定的 16 位微处理器。至少有几十个潜在的候选人,为什么不告诉我们是谁制造的,它的型号是什么。
-
整数类型的确切大小是实现定义的——编译器可以根据目标平台来决定。我怀疑使用处理器本身不支持的
int的大小是否足够愚蠢——尤其是因为int被非正式地认为是目标的本机字长。在有问题的目标上检查有问题的编译器上的sizeof int。 -
@jer:如果有帮助的话,我正在开发 Analog Device Blackfin。
-
从
sizeof(int),我得到4。使用sizeof(short),我得到2。我有点希望sizeof(int)也是2...我还应该使用int吗?对我来说仍然没有完全的意义。谢谢。 -
不要将 C 实现与微处理器混淆。前者可以使其类型几乎任意大小,即使 CPU 本身无法处理它。