2012-04-09 29 views
0

我的程序有一個很奇怪的問題,希望你能幫上忙。我有一對非常基本的功能。一個調用另一個,並要求返回int。C++ Visual Studio Express - 分配返回值失敗函數

至於原因,完全未知的原因,第一個功能無法打印出來,即使如果返回值的變量被分配給一個變量,即條件爲真匹配:

功能1:

int function1(int posX, int posY){ 
    int x=1; 
    int y=1; 
    if (posX == X && posY == Y){   
     printf("Match"); 
     return 1; 
    } 
} 

功能2:

int i = function1(1, 1); 

是否工作:

function1(1,1); 

所以澄清,我說它的工作,如果我得到消息「匹配」。

+1

'if'內有'return'。你是不是錯過了'if'之外的'return'?(對於假的情況)? – chr 2012-04-09 01:04:49

+0

如果變量X和Y被聲明在別的地方,但仍然在這個函數的範圍內,那麼您將會測試這些變量。請記住'X'與'x'不一樣! – Showtime 2012-04-09 01:10:33

+0

逐步通過調試器來檢查值等。 – JohnPS 2012-04-09 02:24:56

回答

2
(posX == X && posY == Y) 

C/C++是區分大小寫。 「X」和「Y」代表什麼?

也許嘗試將它們更改爲小寫?

而且,總是試圖return一個值,即使有不匹配(功能function1是應該返回一個int值吧?)


代碼:(更正)

int function1(int posX, int posY){ 
    int x=1; 
    int y=1; 

    if ((posX == x) && (posY == y)){  
     printf("Match"); 
     return 1; 
    } 

    return 0; 
} 
+0

它並非如此,這些術語工作正常,只有當我將返回值賦給一個停止工作的變量時。它非常奇怪。 – 2012-04-09 01:10:58

+0

@EricBanderhide所以,我想'X'和'Y'在別處被聲明爲全局的?無論如何,請儘量在最後加上'return'聲明。 – 2012-04-09 01:12:46

+0

感謝Kameleon博士,它實際上證明是一個真正奇怪的錯誤深深的影響了回報的代碼。但你的回答仍然告訴我關於回報的幾點好處。 – 2012-04-17 21:41:07