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

+0

変数XとYが他の場所で宣言されていても、まだこの関数のスコープ内にある場合は、代わりにそれらをテストします。 'X'は' x'と同じではないことに注意してください! – Showtime

+0

デバッガを使って値をチェックするなどしてください。 – JohnPS

答えて

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

C/C++ 、大文字と小文字が区別あります。 「X」と「Y」は何を表していますか?

小文字に変更してみてください。

も一致しない場合でも、必ず(?機能function1が右、int値を返すことになっている)returnに値を試してみてください


コード:(修正)

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

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

    return 0; 
} 
+0

それは、正しく動作しません。戻り値を変数に代入して作業を停止する場合に限ります。非常に奇妙です。 –

+0

@EricBanderhideだから、 'X'と' Y'はグローバルとして他の場所に宣言されていると思いますか?とにかく、最後に 'return'ステートメントを入れてみてください。 –

+0

Dr Kameleonありがとう、実際には、復帰に影響を及ぼしていたコードの深い深い深刻なエラーであることが判明しました。しかし、あなたの答えはまだ私にリターンについてのいくつかの良い点を教えてくれました。 –

関連する問題