2016-08-16 5 views
1

vs2013/2015/2008のデバッグでいくつかの問題が発生しました。VSデバッグモードのif ... elseの2つの分岐をこのコードが実行する理由

#include <iostream> 
using namespace std; 


int main() 
{ 
int mode = 1; 
int size = 1; 

if (mode == 0) 
{ 
    cout << "mode = 0" << endl; 
} 
else 
{ 
    if (mode == 1) 
    { 
     if (size > 0) 
     { 
      cout << "mode=1,size=1" << endl; //in debug mode will execute this sentence           
     } 
     else 
      return 0; //however,when I Step in (F10),this will also be executed but have no influence.But When I insert a breakpoint in there and press F5, will not break in there 
    } 
    else if (mode == 2) 
    { 
     if (size > 0) 
     { 
      cout << "mode=2,size=1" << endl; 
     } 
     else 
      return 0; 

    } 
} 


return 1;} 

enter image description here enter image description here

だから、どのようにこの現象を説明するには?何か問題はありますか?そして私はそれをどのように解決できますか?

+0

私はあなたが苦しんでいる問題が何であるか分かりません。もっと詳しく説明できますか? – Polyov

+0

pic1とpic2が表示され、コードをステップバイステップで実行しようとします –

+0

逆アセンブリウィンドウを使用して、実際に何が実行されているかを調べることができます:) – OMGtechy

答えて

0

これはデバッガがVS 2015で動作する方法です。無視してください。

return 0;のように見えても、実行されません。奇妙な行動、私はそれにも驚きました。

彼らは矢はそれが後else文ではなく、最初の行に行く行っている必要がありますが、何らかの理由で、彼らはしませんでした。

無視してください。もしあなたが望むなら、あなたは機能要求をすることができます:)

+0

どうしたらいいですか?コンパイラなどにいくつか問題がありますか? –

+0

@ZhengOniliste単なる機能です。 – Rakete1111

+0

大丈夫、ありがとうございました。 –

関連する問題