任何人都可以指导我如何在C编程中创建一个数据类型,它可以在-2 ^ 127到(2 ^ 127)-1范围内添加2个数字吗?
先谢谢。
答案 0 :(得分: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。这太小了 根据您的需要,您需要使用非标准数据类型或创建自己的数据类型。
幸运的是有128位 gcc和clang编译器中的有符号整数数据类型。它被称为__int128_t。我找不到任何规格 在这种类型的范围,但我们可以假设它在实践中是-2 ^ 127到2 ^ 127-1。此数据类型可以处理 在指定的范围内添加,除非发生进位(参见https://en.wikipedia.org/wiki/Carry_(arithmetic))。