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

为什么会是这样的结果?我认为这可能是类型转换问题,但我无法清楚地找到原因。谁能给我解释一下?

4

1 回答 1

2

原因是您的文字是整数(int),而不是长整数,因此每个中间结果都是。尝试:

     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等等错误的格式总是一个坏主意。

于 2012-08-07T15:44:32.803 回答