假设C中的整数是由硬件规范处理还是在软件中处理?

Cra*_*enz 1 c math standards gcc gmp

假设C中的整数是由硬件规范处理还是在软件中处理?

按整数,我指的是原语"int"

根本的想法是,如果C中的整数不依赖于硬件,那么让gcc实现不同的整数处理程序会违反标准.这样你就可以拥有传统的32位int处理程序,然后你也可以使用256位整数的处理程序,甚至可以使用动态大小的整数.

我确实知道long和long long,但我不确定它们是否独立于提供的硬件,我只想指定构建工具链时要使用的"int"处理程序的大小/类型.

我也理解这样做的危险(因为使用32位整数编译器构建256位整数会很糟糕!),但对于那些需要类似gmp库的代码,我认为它会使代码可读性更好.兼容性是相同的,但依赖性将在编译器而不是代码本身.

疯狂的想法,我知道......但回到最初的问题:

假设C中的整数是由硬件规范处理还是在软件中处理?

APr*_*mer 5

标准说

A"普通" int对象具有由执行环境(足够大以包含在范围内的任何值的体系结构建议的大小INT_MIN,以INT_MAX如在标头中定义<limits.h>).

并且<limits.h>约束的描述INT_MIN最多为-32767并且INT_MAX至少为32767.因此,如果您的硬件具有12位字,则必须使用两个字来表示int.