C标准和C编译器配有固定宽度的整数类型,如uint8_t
,int16_t
等是否可以在C中创建自定义宽度的整数?
有用C限定一个128位的整数的方式,将使用相同的语义是在代码可用作为现有的固定宽度整数?
C标准和C编译器配有固定宽度的整数类型,如uint8_t
,int16_t
等是否可以在C中创建自定义宽度的整数?
有用C限定一个128位的整数的方式,将使用相同的语义是在代码可用作为现有的固定宽度整数?
假设你正在编写一个64位机器,你可以定义一个uint128_t
类型为struct
两个uint64_t
s,并只实现你需要的算术运算符。在一个或另一个方向溢出的情况下,您必须手动处理从低64位到高位的携带位,反之亦然。 (例如,将0xFFFFFFFF加到0x00000001)。这比使用GMP等任意大小的标准库整个库要轻得多。举例来说,编写会有点棘手,但决不是不可能的 - 例如,当天8位计算机上的内置BASIC如何处理数字大于255的数字。
没有操作符重载到C中的自定义类型,所以不是真的。您需要调用add(),subtract()等函数。 – 2013-05-10 23:07:27
如果您想要的行为类似于内置类型,但实际上是具有自定义行为的特殊类型,那么最好使用C++对象。你可以很容易地用128位的标准整数类语义来创建一个C++对象。 – StilesCrisis 2013-05-10 23:08:52
我正在研究纯C代码库。 – merlin2011 2013-05-10 23:10:34