2013-02-10 75 views
0

調用返回值而不存儲變量中返回值的函數是否正確? 以下是一些示例代碼:在不存儲返回值的情況下調用函數

class Test 
{ 
    int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 

    boolean validity() 
    { 
    //some code 
    isLeap(); 
    } 

    boolean isLeap(int y) 
    { 
     if(y%400==0 || (y%100!=0 && y%4==0)) 
     { 
      days[1] = 29;    
      return true; 
     } 
     else 
     { 
      days[1] = 28;   
      return false; 
     } 
    } 
} 
+0

編譯器允許。 – 2013-02-10 19:09:32

+2

你必須做'return isLeap();'所以你可以編譯,但它是有效的。 – 2013-02-10 19:10:26

回答

3

是的,它是允許的。編譯器不會拋出錯誤。但在你的情況下,將處理器時間用於不必要的事情沒有任何意義。

+1

我在代碼中的其他地方也使用了相同的函數 – Jasjeev 2013-02-10 19:28:20

0

是的,它是允許

在你的代碼示例,這不是良好的編程風格。所謂isLeap的函數(XXX)正在更新數據。我不認爲大多數人會期待在這樣的功能中更新數據的副作用。
意外的副作用會導致一些令人討厭的錯誤。

相關問題