2016-09-20 23 views
-4

任何人都可以指导我如何在C编程中创建一个数据类型,它可以在-2^127到(2^127)-1的范围内添加2个数字?如何在c中创建用户定义的数据类型,如下所示?

在此先感谢。

+0

那么,你觉得呢?这种数据类型应该多大? –

+1

如果您还没有完成,请花些时间阅读[帮助页面](http://stackoverflow.com/help),尤其是名为[“我可以询问什么主题?”]的部分( http://stackoverflow.com/help/on-topic)和[“我应该避免问什么类型的问题?”](http://stackoverflow.com/help/dont-ask)。另请[请阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask),并学习如何创建[最小,完整和可验证示例](http:// stackoverflow .COM /帮助/ MCVE)。 –

+0

你甚至想要计算什么?! – rak007

回答

0

由于范围包含负整数,我们需要一个有符号的数字。 C标准规定的最大有符号整数是 是long long int(在ISO C99标准中引入,参见https://en.wikipedia.org/wiki/C_data_types)。

该标准规定,它应该至少能够保持 的数字在 - (2^63-1)至2^63-1的范围内。注意这里实现这种数据类型的常见方式为 硬件是使用一个64位二进制补码整数,给出-2^63到2^63-1的精确范围。这对于您的需求来说太小,因此您需要使用非标准数据类型或创建自己的数据类型。

幸运的是,在gcc和clang编译器中都有一个128位的 有符号整数数据类型。它被称为__int128_t。我在这种类型的范围内找不到任何规格 ,但我们可以假定它实际上是-2^127到2^127-1。此数据类型可以在您指定的范围内处理 添加,除非发生进位(请参阅https://en.wikipedia.org/wiki/Carry_(arithmetic))。

相关问题