c - c语言中如何存储超过9位的数字?

标签 c typedef

当我上网时,我使用了以下类型定义编码。我想这可能有效。但是,我无法理解代码。你能解释一下下面的编码吗:

    #define RADIX (10)
    #define DIGIT_BIT (4) /* A better way than hardcoding 4? */
    #define DIGIT_PER_BYTE (CHAR_BIT/DIGIT_BIT)
    #define DIGIT_BIT_MASK (~(UINT_MAX << DIGIT_BIT))
    typedef struct ThirteenDigitNum 
      {
        char unsigned digits[13/DIGIT_PER_BYTE + !!(13%DIGIT_PER_BYTE)];
      } ThirteenDigitNum;
    typdef struct DigitAccessInfo 
      {
        unsigned byte_index;
        unsigned shift_by;
        unsigned mask;
      };

是否有任何内置数据类型可以满足我的需求?

最佳答案

看起来 long long int 可以使用 C++ 标准为您提供超过 18 位数字(并且,根据下面的评论,也可以使用 C)。

http://www.cplusplus.com/reference/climits/

关于c - c语言中如何存储超过9位的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975887/

相关文章:

c - 满足三元运算符的条件

C - 无法使用 while 和逻辑运算符停止程序

c - 为什么我们要在 C 语言中如此频繁地定义一个结构体?

c - 如何防止符号重新定义

c++ - typedef 中的 const 警告

c++ - 如何在 C/C++ 源代码中使用函数 typedef?

c - 如果我只传递一个变量,为什么 printf() 会崩溃?

CS50 恢复段错误问题

C : typedef struct name {. ..}; VS typedef struct{...} 名称;

c - 使用指针 : using a global, 按值传递哪个更快?