在C中定义长整数的首选方法是什么?是否存在兼容性问题?
long int ln;
或
long ln;
答案 0 :(得分:5)
没有"兼容性问题",没有。它们是完全相同的类型,long
是类型名称long int
的简短形式。就像short
是short int
的简短形式一样。
它当然非常主观,但我认为大多数C程序员只使用long
。
答案 1 :(得分:3)
long和long int之间没有区别。你可以使用你想要的。我宁愿使用long int来记住你所做的事情。
答案 2 :(得分:2)
除了@ 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;
}
答案 3 :(得分:2)
您忘了提及signed long
和signed long int
:)
根据C标准
5每个以逗号分隔的多重集都指定相同的类型, 除了对于位域,它是实现定义的是否 specifier int指定与signed int或相同类型相同的类型 as unsigned int
因此,仅针对位域,例如int
和signed int
考虑到您可以通过以下方式编写
const signed const long const int ln;
相当于
const long ln;
答案 4 :(得分:2)
如果您所在的公司有编码惯例,并且包含对此的要求,则应遵循惯例。但是,如果没有关于如何申报long int
的规则,请选择最适合您的内容。
我建议您使用stdint
中定义的类型。例如,long int
可能等同于int32_t
。在很多情况下,了解您正在使用的变量的位宽非常有用。