Cra*_*enz 1 c math standards gcc gmp
假设C中的整数是由硬件规范处理还是在软件中处理?
按整数,我指的是原语"int"
根本的想法是,如果C中的整数不依赖于硬件,那么让gcc实现不同的整数处理程序会违反标准.这样你就可以拥有传统的32位int处理程序,然后你也可以使用256位整数的处理程序,甚至可以使用动态大小的整数.
我确实知道long和long long,但我不确定它们是否独立于提供的硬件,我只想指定构建工具链时要使用的"int"处理程序的大小/类型.
我也理解这样做的危险(因为使用32位整数编译器构建256位整数会很糟糕!),但对于那些需要类似gmp库的代码,我认为它会使代码可读性更好.兼容性是相同的,但依赖性将在编译器而不是代码本身.
疯狂的想法,我知道......但回到最初的问题:
假设C中的整数是由硬件规范处理还是在软件中处理?
标准说
A"普通"
int对象具有由执行环境(足够大以包含在范围内的任何值的体系结构建议的大小INT_MIN,以INT_MAX如在标头中定义<limits.h>).
并且<limits.h>约束的描述INT_MIN最多为-32767并且INT_MAX至少为32767.因此,如果您的硬件具有12位字,则必须使用两个字来表示int.