2012-08-07 62 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等格式錯誤永遠是一個壞主意。