2017-03-27 303 views
-2

我已完成該程序,但出現一個錯誤。它表示總和,分鐘,小時,秒在此函數中未初始化。我試過使用不同的變量,並初始化變量,但它仍然無法工作。有人能幫我弄清楚我做錯了什麼。我把time(total,hours, mins, secs);變量在此函數中未初始化使用

#include <iostream> 

using namespace std; 

void time(int, int, int, int); 

int main() 
{ 
int total; 
int hours; 
int mins; 
int seconds; 
int secs; 

cout << "Enter the number of seconds: "; 
cin >> seconds; 
    time(total, hours, mins, secs); 
cout << "The number of hours is: " << hours << endl; 
cout << "The number of minutes is: " << mins << endl; 
cout << "The number of seconds is: " << secs << endl; 
return 0; 
} 

void time(int total, int &hours, int &min, int &sec) 
{ 
    int rem1; 
    hours = total/3600; 
    rem1 = total % 3600; 
    min = rem1/60; 
    sec = rem1 % 60; 
    return ; 
} 

編譯器輸出:

15:38: warning: 'total' is used uninitialized in this function [-Wuninitialized] 
15:38: warning: 'hours' is used uninitialized in this function [-Wuninitialized] 
15:38: warning: 'mins' is used uninitialized in this function [-Wuninitialized] 
15:38: warning: 'secs' is used uninitialized in this function [-Wuninitialized] 

我已經完成了程序,但我發現了一個錯誤。它表示總和,分鐘,小時,秒在此函數中未初始化。我試過使用不同的變量,並初始化變量,但它仍然無法工作。有人能幫我弄清楚我做錯了什麼。我把時間(總計,小時,分鐘,秒);

+1

您的函數'time'聲明與函數'time'的定義不匹配。這意味着它們是兩種不同的功能,你應該得到一個「未解決的符號」錯誤。 – aschepler

+1

''total''參數中'time()'應該用'seconds'調用? – corn3lius

回答

1

你的函數原型是不正確的位置:

void time(int, int, int, int); 

它應該是:

void time(int, int&, int&, int&); 

一旦是固定的(大部分)的警告應該消失。儘管如此,你仍然有一些其他的bug你使用seconds作爲你的輸入變量,但是你放棄了這個,而是將未初始化的變量total傳遞給你的函數 - 你可能只需要使用total作爲你的輸入變量,並擺脫seconds

+1

警告可能會消失,但它仍然是垃圾 – NathanOliver

+0

現在我得到了這個錯誤hours = total/3600;在這個函數中total是未初始化的int total;這裏聲明瞭總計 – programmer1111

+0

@ programmer1111:重新閱讀上述答案的最後一段。 –