2017-11-29 13 views
-8

誰かがなぜこのプログラムが唯一のcoutテキストを与えるのか教えてもらえますか?Visual StudioのC++プログラムは、FOR関数を読まずに終了します。

#include "iostream" 
#include "stdafx.h" 
#include <iostream> 

using namespace std; 
int main() 
{ 
    float x; 
    int y[50]; 
    int n; 
    cout << "Dati notele despartindule prin Enter"; 
    for (n = 0; n == 5; n++) { 
     cin >> y[n]; 
     if (n >= 1) { 
      y[n] = y[n - 1] + y[n]; 
     } 
    } 
    x = y[n]/(n + 1); 
    cout << x; 
    return 0; 
} 
+6

'for'ループの働きを知っていますか?その結果が「偽」(「0」は**「** 5」に等しい)であるため、「n」は「0」に割り当てられ、次に「5」と比較される。入力されました。 [良いC++の本](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を読むことを検討してください。 –

+3

はい、デバッガがあなたに伝えます。 * Fix-my-code *の質問はここで話題にはなりません。 BTW '' stdafx.h ''は標準のC++ヘッダーではありません(いくつかの[C++リファレンス](http://en.cppreference.com/w/)サイトを参照してください)。次回は、すべての警告とデバッグ情報(例: 'g ++ -Wall -Wextra -g'と[GCC](http://gcc.gnu.org/)...)でコンパイルし、コードを改善して警告を出さずに、デバッガ**を使用してください(例: 'gdb')。あなたの次の質問は、いくつかの[MCVE] –

+2

を入力してください。デスクトップ上のショートカットからプログラムを起動したときのプログラムのプレビューが表示されます。 main()の最後にブレークポイントを設定すると、コンソールが閉じられる前にその内容を読むことができます。 –

答えて

2
for (n = 0; n == 5; n++) 

あなたが望むものではありません。あなたの条件はtrueている間

n = 0; 

while(n == 5) 
{ 
    // you loop body here 
    n++; 
} 

あなたが見ることができるように、それはを実行:for -loopは異なる構文を使用してwhile -loop以外の何ものでもありません。この場合は、まずはtrueではないからです。

おそらく問題です

for (n = 0; n < 5; n++) 
1

n == 5を意味しました。関数のために来て、ブロックが実行する必要があるかどうかを調べるためのテストを行うときには、n = 0で初期化するのでfalseを返します。 n == 5よりも良いのはn!=5ですが、n = 5にするとスキップすると無限ループになります。

ベストケースはn < 5です。

関連する問題