0

私はC++を学びたいと思っている初心者です。私は、遊ぶべき多くの例と概念を与える本を持っています。この本の最初の例の1つは、Quincy 2005を使用してコンパイルされていません。これはコードまたはIDEの障害ですか?

例はここにあります:

#include <stdio.h>

void main (){



int date = 10, d2=15;
float temp = 45.0, t2=33.5;


printf("On Dec. %d, temperature was %f.\n", date, temp);
printf("On Jan. %d, temperature was %f.\n", d2, t2);


}

残念ながら、IDEは::mainが整数を返さなければならないと述べています。何か案は?

例はCに似ていますが、これは単に時代遅れですか?

4

3 に答える 3

5

それはあなたが使っている本当に貧弱な本です。これはCの例であり(そこにある単一のC ++機能ではありません)、正しいコーディング手法を強制する最新のC++コンパイラーではコンパイルされません。

正しいコードは次のようになります。

#include <stdio.h>

int main (int argc, char **argv)
{
    int date = 10, d2=15;
    float temp = 45.0, t2=33.5;


    printf("On Dec. %d, temperature was %f.\n", date, temp);
    printf("On Jan. %d, temperature was %f.\n", d2, t2);

    return 0;
}

知らせ:

  • の返品タイプがmainからに変更されvoidましたint
  • mainコマンドラインパラメータの数とそのc文字列値の2つの引数を取ります
  • main終了コードを返すようになりました

C ++の本でよろしいですか?

于 2012-07-06T03:43:50.310 に答える
3

を宣言するための最大限の移植性のある方法として、C++標準で指定されている方法は2つだけmainです。他のすべては実装定義です。以下は、最新のドラフト、セクション3.6.1p2からのものです。

実装は、主な機能を事前に定義してはなりません。この関数はオーバーロードされてはなりません。戻り型はint型でなければなりませんが、それ以外の場合、その型は実装定義です。すべての実装では、次のmainの定義の両方を許可する必要があります int main() { /* ... */ }int main(int argc, char* argv[]) { /* ... */ }

于 2012-07-06T03:48:43.360 に答える
1

main()タイプがの関数を持つことはできませんvoid

に変更します

#include <stdio.h>

int main ()
{
    int date = 10, d2=15;
    float temp = 45.0, t2=33.5;


    printf("On Dec. %d, temperature was %f.\n", date, temp);
    printf("On Jan. %d, temperature was %f.\n", d2, t2);

    return 0; /* The compiler will assume this for main() if you don't specify it */
}

そしてそれはうまくいくでしょう。void関数が許可されない理由mainは、メイン関数が成功または失敗をオペレーティングシステムに返す必要があるためです。慣例では、0を返すことはプログラムが正常に実行されたことを意味し、他の数値はエラーコードです。

argcオプションで、およびパラメータをメイン関数に追加できますargv。これらは、コマンドラインからプログラムに渡される値を取得するために使用されます。たとえば、プログラムの名前が「myprogram」の場合、次のコマンドを使用してコマンドラインから実行した場合:

./myprogram -test

その場合argc、配列argvの長さである、は2になり、argvは次の値を持つ配列になります。

argv[0] = "./myprogram";
argv[1] = "-test";
于 2012-07-06T03:43:49.587 に答える