2010-04-30 209 views
0

不能從C++中的「void」轉換爲「int」 - 任何人都知道爲什麼?有沒有我必須使用的功能?不能從「void」轉換爲「int」

int calc_tot,go2; 
go2=calculate_total(exam1,exam2,exam3); 
calc_tot=read_file_in_array(exam); 
+1

它發生在哪一行? 'calculate_total'和'read_file_in_array'的返回類型是什麼?我猜這些返回中的一個是'void'類型,你不能轉換爲'int',因爲它沒有任何意義。 – 2010-04-30 20:25:36

+2

「不能將任何東西轉換爲數字」的部分是你有問題嗎? – 2010-04-30 20:29:00

+0

o對不起 void calculate_total(exam1,exam2,exam3); void read_file_in_array(exam); – user320950 2010-04-30 22:23:45

回答

0

void與說無類型相同。虛空中沒有任何信息。你不能將任何信息轉換成數字,因此是錯誤的。

也許如果您向我們提供有關您的功能類型或確切錯誤發生位置的更多信息,我們可以爲您提供更多幫助。

3
go2=calculate_total(exam1,exam2,exam3); 
calc_tot=read_file_in_array(exam); 

我的猜測是這兩個函數之一會返回一個void,所以您不能將該值賦給int。由於「void」函數不返回任何內容,因此無法將其返回值分配給int。

我希望這樣的代碼給你這樣的錯誤:

void voidfunc() { 
    // Do some things 
} 

int main() { 
    int retval = voidfunc(); 
    return 0; 
} 

雖然我的編譯器爲:

$ g++ main.c 
main.c: In function ‘int main()’: 
main.c:6: error: void value not ignored as it ought to be 
+0

我只是把一個新的用我的新代碼提問 – user320950 2010-04-30 23:02:53

+0

downvote的原因? – WhirlWind 2010-05-01 14:42:31

0

根據您的意見,calculate_total聲明是錯誤的。如果函數需要返回一個值,它應該被聲明爲:

int calculate_total(/*...*/); 

注意的int函數名的前面,而不是void

而在函數體:

int calculate_total(/*...*/) 
{ 
    int total = 0; 
    /* ... calculate the total */ 
    return total; // Return the total. 
} 

如果你堅持有一個函數返回void,你可以換個說法添加到函數:

void calculate_total(int * total, /*...*/); 

功能就變成了:

void calculate_total(int * total, /*...*/) 
{ 
    if (total) /* check for null pointers */ 
    { 
    *total = 0; 
    for (/*...*/) 
    { 
     *total += /*...*/ 
    } 
    } 
    return; 
} 
相關問題