【发布时间】:2009-07-26 12:59:51
【问题描述】:
C 中的整数是假定由硬件规范处理还是由软件处理?
整数,我指的是原始的“int”
基本思想是,如果 C 中的整数不依赖于硬件,那么让 gcc 实现不同的整数处理程序是否违反标准。这样您就可以拥有传统的 32 位 int 处理程序,然后您还可以拥有 256 位整数的处理程序,甚至可能是动态大小的 int。
我知道 long 和 long long,但我不确定它们是否独立于提供的硬件,我只想指定构建工具链时使用的“int”处理程序的大小/类型.
我也理解这样做的危险(因为使用 32 位整数编译器构建 256 位整数会很糟糕!),但是对于那些需要 gmp 库之类的代码,我认为它会生成代码可读性好很多。兼容性将是相同的,但依赖于编译器而不是代码本身。
我知道这个想法很疯狂……但回到最初的问题:
C 中的整数是假定由硬件规范处理还是由软件处理?
【问题讨论】:
-
也许你想看看 C++ 及其运算符重载能力。
-
AFAIK,整数的大小取决于编译器编写者的想法。它们通常使 int 的大小与底层架构相匹配。
-
你可以放弃并使用haskell来代替程序的那些部分stackoverflow.com/questions/1184296/…我不希望有太多的性能损失,甚至可能运行得更快,具体取决于哪种类型它是程序。