那么,"长"是否有任何意义?是否有理由声明long而不是ptrdiff_t或int64_t?
Chr*_*utz 17
是否有理由声明long而不是ptrdiff_t或int64_t?
在那些情况下从来没有.如果你想要一个指针差异,或一个特定的64位值,你应该使用ptrdiff_t或int64_t.你应该永远不会long在第一时间使用,除非可能依赖于平台typedef.
您应该long在需要至少32位整数时使用,因为int只保证至少为16位.如果您需要本机类型,但需要至少32位,请使用long.如果在某些旧平台上可以接受16位限制(可能无关紧要,并且您的代码可能永远不会被编译)那么这并不特别重要.
still useful和之间有一个微妙的区别something you should habitually use.这种long类型仍然蓬勃发展,正如Chris Lutz在许多系统和平台特定类型背后所说的那样(尽管通常是无符号的).
当你知道你将要使用的数据总是适合那种类型(同样,如果你也知道签名就更好),没有特别的理由不使用它,特别是如果你在结构中的空间有限与...合作.
但是,在大多数情况下,为了将来的维护者,尽可能使用intxx_t或uintxx_t要好得多.例如,您不知道UNIX纪元日期总是适合32位平台上的无符号长整数(因此,time_t),除非您拥有良好的权限,世界将在其翻身之前结束:)