2013-06-22 31 views
1

我很抱歉,但我還在學習。請不要觸摸我的聲譽,請:)這個編譯,我只是想知道是否有更好的解決方案。我不覺得它很優雅。 如果(Price == 0)我想不做任何事情就從函數中退出。在void函數中返回「nothing」是允許的嗎?

void Esempio(int Price) 
{ 
    if (Price==0) 
     return; 
    MyArray[0]=Price; 
} 

這是退出void函數的正確方法嗎?我指的是回報。我突然想到,我從來沒有見過「沒有回報」。什麼更「優雅」?

謝謝。

+0

除了這個事實之外,有什麼不雅之處呢,你可以反轉if? – chris

+0

在優雅方面:使用'return;'來退出void函數是完全合法的,並且通常非常有用。早期留下無效功能不僅僅是「一些破綻」。 – Ephemera

回答

4

這是退出void函數的正確方法嗎?

是的。

再說了 「優雅」

void Esempio(int Price) 
{ 
    if(Price != 0) 
     MyArray[0] = Price; 
} 
+0

謝謝,無論如何(在我的真實代碼),這是不可能做什麼,你建議哪個是,當然,最好的解決方案 – alwaystudent

1

是的,它的工作原理100%, 在void函數,返回意味着剛剛完成這項工作,並返回什麼!

+0

這已經是優雅的方式:) – user2351448

1

是的,這是合法的。

事實上,你return總比沒有在虛空功能以外,像下面,將導致編譯錯誤return-statement with a value, in function returning 'void'

//illegal code 
void func(void) 
{ 
    return 0; 
} 
+0

'void'作爲參數是不必要的C + +不像C) – soon

0

我覺得這是作爲一個elegant方式

void Esempio(int Price) 
{ 
    if(Price) 
     MyArray[0] = Price; 
} 

if(Price)表示if(Price != 0)

void函數中您不需要在函數結尾處有return聲明。

您也可能會重新考慮您的實施。當價格爲0時,您是否真的想要調用此功能?

也許這種態度

void Esempio(int Price) 
{ 
    MyArray[0] = Price; 
} 

if(Price) Esempio(Price); 

會讓你的程序simplier。

+0

移動功能外的檢查可能導致代碼重複。例如。如果從3個地方打電話,你必須在外面檢查3次,而不是在裏面檢查一次。 – MSalters