2016-07-30 111 views
-1

我試圖做一個簡單的計算器。不明白爲什麼我會收到「控制可能達到非無效功能結束」的警告。爲f()函數。有什麼建議麼?控制可能會達到無效功能開關語句結束

這是我的代碼:

#include <iostream> 

using namespace std; 

int f(int a, int b, int i){ 
    switch(i){ 
     case 1: return a+b; 
     case 2: return a-b; 
     case 3: return a*b; 
     case 4: return a/b; 
     case 5: return a%b; 
    } 
} 

int main(){ 
    char Continue='y'; 
    int a,b,i; 
    cout<<"1.Add"<<endl<<"2.Subtract"<<endl<<"3.Multiply"<<endl<<"4.Divide"<<endl<<"5.modulus"<<endl; 
do{ 
    cout<<"Enter two numbers:"<<endl; 
    cin>>a; 
    cin>>b; 
    cout<<"Enter the number of what kind of caculation you want to do"; 
    cin>>i; 
    cout<<f(a,b,i); 
    cout<<"Press y to continue/n"; 
    cin>>Continue; 
    }while(Continue=='y'); 
} 
+7

會發生什麼,如果我= 6?在switch語句中查看'default'的使用。 – Beta

+1

如果'i'爲'4'或'5'且'b'爲0,這也很有趣。 – PaulMcKenzie

+0

對於除默認值之外的每種情況,獲取那些break語句。這非常危險。 –

回答

1

因爲如果i既不是1,2,3,4,5,則執行越過整個switch聲明完全,並且存在從一個沒有明確return函數應該返回一個int

+0

我添加了一個if語句,以便在1-5範圍內收縮我的值,否則它會關閉「無效」。我不明白你提到的那部分「沒有明確的返回函數應該返回一個int」。你能詳細說明一下嗎? – LIHAHA

+0

它仍然缺少一個return語句。你是否明白在任何情況下你都需要從函數中返回一些東西? –

+0

我在f函數的末尾添加了「return 0」,現在錯誤消失了。非常感謝你! – LIHAHA

0

你需要添加一些類型的默認標籤到您的switch語句,一般的語法如下

switch(value) 
{ 
case 0 : 
//do something 
break; 
case 1: 
break; 
//// add any case as needed 
default : // this would be the line you're missing 
break; 
} 

非空意味着它不返回任何東西,這是同樣的事情知曉返回功能一個東西,而是你跳過這一部分完全

tldr你esentially這樣

int non_void() 
{ 
//do stuff but not return anything 
} 
相關問題