是否有一个常数来定义 long 或 integer 的最大值?

Posted

技术标签:

【中文标题】是否有一个常数来定义 long 或 integer 的最大值?【英文标题】:Is there a constant which defines the max value of long or integer? 【发布时间】:2012-03-18 17:49:03 【问题描述】:

在java中,Long的最大值有一个常数。 如:

long minBillId = Long.MAX_VALUE

Obj-C中long或int的最大值有常数吗?

【问题讨论】:

【参考方案1】:

如果你导入limits.h 你可以拨打LONG_MAX

作为参考,site 展示了如何获取所有类型的最大值:

#import <limits.h>
 // ...
NSLog(@"CHAR_MIN:   %c",   CHAR_MIN);
NSLog(@"CHAR_MAX:   %c",   CHAR_MAX);
NSLog(@"SHRT_MIN:   %hi",  SHRT_MIN);    // signed short int  
NSLog(@"SHRT_MAX:   %hi",  SHRT_MAX);
NSLog(@"INT_MIN:    %i",   INT_MIN);
NSLog(@"INT_MAX:    %i",   INT_MAX);
NSLog(@"LONG_MIN:   %li",  LONG_MIN);    // signed long int
NSLog(@"LONG_MAX:   %li",  LONG_MAX);
NSLog(@"ULONG_MIN not defined, it's always zero: %lu", 0);  
NSLog(@"ULONG_MAX:  %lu",  ULONG_MAX);   // unsigned long int
NSLog(@"LLONG_MIN:  %lli", LLONG_MIN);   // signed long long int
NSLog(@"LLONG_MAX:  %lli", LLONG_MAX);
NSLog(@"ULLONG_MIN not defined, it's always zero: %llu", 0);  
NSLog(@"ULLONG_MAX: %llu", ULLONG_MAX);  // unsigned long long int

【讨论】:

【参考方案2】:

INT_MAX 应解析为 2147483647

这个:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])

    NSInteger foo = INT_MAX;
    NSLog(@"foo: %li", foo);  // li because 64 bit OSX cmd line app

    return 0;

输出:

2012-03-18 13:58:54.509 Craplet[51324:707] foo: 2147483647

【讨论】:

应该吗?还是总是因为语言规范这样说?【参考方案3】:
  NSLog(@"INT_MIN:    %i",   INT_MIN);
  NSLog(@"INT_MAX:    %i",   INT_MAX);
  NSLog(@"LONG_MIN:   %li",  LONG_MIN); 
  NSLog(@"LONG_MAX:   %li",  LONG_MAX);

【讨论】:

以上是关于是否有一个常数来定义 long 或 integer 的最大值?的主要内容,如果未能解决你的问题,请参考以下文章

Java中怎么将Long类型转换成Integer或int类型?

SQLite 中是不是有 Long 类型?

mybatis判断Long,Integer类型的条件是否为空

c语言中的枚举型啥意思

c语言中的枚举型啥意思

long(Long)与int(Integer)之间的转换