2012-04-09 25 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