2017-04-24 42 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.

相关问题