2017-04-24 38 views
0

我寫一個函數來測試使用的短用java的Java:使用短而不是INT

public static short shortFactorial(short n) 
{ 
    short lIndex = 1; 
    short lResult = 1; 

    for(lIndex = 1;lIndex <= n;lIndex++) 
    { 
     lResult = (short)(lIndex * lResult); 
    } 

    return(lResult); 
} 

我呼籲與最大尺寸的功能很短,即:

shortFactorial((short)33000) 

誰能告訴我爲什麼結果是1?

+7

Short.MAX_VALUE = 32767,lIndex永遠不會低於n,因爲n溢出爲負數。因此您跳過循環並返回1. –

+0

謝謝,您的腦子在我的腦子裏滴答滴答。 – signalmarkp

回答

2

由於short的最大值爲32767,(short)33000會溢出到負值,因此您的循環不會重複。當您初始化lResult = 1時,它返回1.

相關問題