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
为什么会这样? 我认为这可能是一种类型转换问题,但我无法清楚地找到原因。谁能为我解释一下?
答案 0 :(得分: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));
但是,告诉NSLog
或printf
等格式错误总是一个坏主意。