2012-08-07 69 views
0
long long d = 1000*3600*24*365; 
NSLog(@"d:%lld",d); 

NSLog(@"year:%d",d/(1000*3600*24*365)); 

d = 100*1000*3600*24*365; 
NSLog(@"year:%d",d/(1000*3600*24*365)); 

结果:长长的数格错误

usworldpro[1106:c203] year:1 

usworldpro[1106:c203] year:0 

为什么会出现这种结果呢? 我认为这可能是一个类型转换问题,但我无法清楚地找到原因。谁能为我解释?

回答

2

原因是你的文字是整数(整数),不是长整型,所以每个中间结果都是。 尝试:

 long long d = 1000ll*3600ll*24ll*365ll; 
    NSLog(@"d:%lld",d); 

    NSLog(@"year:%d",d/(1000ll*3600ll*24ll*365ll)); 

    d = 100ll*1000ll*3600ll*24ll*365ll; 
    NSLog(@"year:%d",d/(1000ll*3600ll*24ll*365ll)); 

然而,告诉NSLogprintf等格式错误永远是一个坏主意。