【问题标题】:Which is preferred: 'long int' or 'long'首选:“long int”或“long”
【发布时间】:2014-08-17 12:07:27
【问题描述】:

在 C 中定义长整数的首选方法是什么?是否存在兼容性问题?

long int ln;

long ln;

【问题讨论】:

  • 注意:C11 规范始终使用long int,如long int ftell(FILE *stream);。在我自己的偏好(在long)之前,我会遵守该组的编码标准(如果存在)。

标签: c int long-integer


【解决方案1】:

如果您工作的公司有编码约定,并且其中包含对此的要求,您应该遵守约定。但是,如果没有关于如何声明 long int 的规则,请选择您认为最好的。

我建议您使用stdint 中定义的类型。例如,long int 可能等同于 int32_t。在很多情况下,了解您正在使用的变量的位宽很有用。

【讨论】:

    【解决方案2】:

    你忘了还有signed longsigned long int:)

    根据 C 标准

    5 每个以逗号分隔的多重集表示相同的类型, 除了位域,它是由实现定义的 说明符 int 指定与 signed int 相同的类型或相同的类型 作为无符号整数

    因此,仅对于位域,intsigned int 之间存在差异

    考虑到你可能会这样写,例如以下方式

    const signed const long const int ln;
    

    相当于

    const long ln;
    

    【讨论】:

      【解决方案3】:

      long 和 long int 没有区别。你可以使用你想要的。我宁愿用 long int 来记住你做了什么。

      【讨论】:

        【解决方案4】:

        除了@unwind 的回答,还有long double,当然还有long long int。 Long 可能在实现的其他罕见角落中有用(long char?),但它始终是一个修饰符,但如果没有什么可修改的,则假定 int

        C 的语法传统上在很多地方都隐含了int

        myfunction (i, j)
        {
             return 6 * i + j;
        }
        

        在 1979 年 V6 Unix 上的实现中,myfunction() 将被解释为返回类型 int,除非进一步声明,否则这两个参数也将被假定为 int

        float myfunction (i, j)
         long i;  float j;
        {
             return 6 * i + j;
        }
        

        【讨论】:

          【解决方案5】:

          没有“兼容性问题”,没有。它们是完全相同的类型,long 是类型名称 long int 的缩写形式。就像shortshort int 的缩写一样。

          这当然是非常主观的,但我认为大多数 C 程序员只是使用long

          【讨论】:

          • 太好了,我个人喜欢 long int 定义,但我想我会使用较短的定义来保存一些字符。谢谢。
          • 一切都与可读性有关,在这种情况下无关紧要。
          猜你喜欢
          • 1970-01-01
          • 2016-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多