0

私はC ++の初心者です。私の最初のアプリはそのように見えます。

#include "stdafx.h"
#include <iostream>
using namespace std;
int add (int x, int y);

int add (int x, int y){
return (x+y);
}
int _tmain(int argc, _TCHAR* argv[])
{
    int x, y;
    cin >>x>>y;
    cout <<add (x,y);
    cin.get();
    return 0;
}

2 つの質問があります。

  1. を使用した場合でも、関数が値を返した直後にコンソールウィンドウが閉じるのはなぜcin.get();ですか?
  2. int add (int x, int y);ファイルの先頭に行を追加せずに、このアプリケーションをテストしました。うまくいきました。関数やアプリケーションがなくても動作するすべての関数またはアプリケーションのプロトタイプを作成する必要がありますか?
4

4 に答える 4

4

質問 1:cin >>x>>y入力バッファに改行が残り、cin.get代わりに読み取られるため、処理が続行されます。

試す

cin.sync(); //remove unread characters
cin.get(); //read one character (press enter)

質問 2: プロトタイプがあるので、関数が存在することをコンパイラに知らせてから、関数を使用し (たとえば main で)、関数の本体を後で (たとえば main の後に) 定義できます。

int add (int, int); //compile error if left out

int main()
{
    add (3, 4);
}

int add (int a, int b)
{
    return a + b;
}
于 2012-04-21T20:59:38.493 に答える
1

を使用するcin >> x >> yと、そのステートメントは 2 つの数値入力値のみを読み取りますが、行を入力するために必要な Enter キーを押すことはありません。その Enter キー押下は入力バッファに留まり、cin.get()後で消費されます。

于 2012-04-21T21:00:01.897 に答える
0

この行を使用して、代わりにコンソールを開いたままにすることができます。

cin.ignore(numeric_limits<streamsize>::max());

または、Visual Studioを使用している場合は、ctrl + F5を使用してプログラムを実行でき、これらのトリックなしでコンソールを開いたままにする必要があります。または、自分で起動したcmd.exeウィンドウからプログラムを実行することもできます。


関数プロトタイプは、現在の変換ユニットで関数を定義する前に(またはその代わりに)関数を呼び出したい場合にのみ必要です。これが、別の実装ファイルで定義した関数の関数プロトタイプがヘッダーに含まれている理由です。

于 2012-04-21T21:08:50.350 に答える
0
#include <iostream>
using namespace std ;



int main(void)
{


  cout<<" \nPress any key to continue\n";

  cin.get();

   return 0;
}
于 2012-05-01T09:26:19.597 に答える