-5

この種のコードをVS2010に変換する際に特に問題はありますか(確認する前に知っておく必要があります)

オンラインVS2010コンパイラはありますか?

何をしassert(false);ますか?

    int applyOperator(Operator op,int x,int y)
{
  switch (op) {
    case operator_plus:  return x+y; // jesli operator_plus zwroc x + y itd.
    case operator_minus: return x-y;
    case operator_mul: return x*y;
    case operator_div: return x/y;
    case operator_none:
      break;
  }
  assert(false);
  return 0;
}

#include <iostream>

using namespace std;
#include <iostream>
#include <string>
class Student {
public:
    string Name, ID, Gender, BirthDate, Major;
    friend istream& operator >> (istream& in, Student& s); //DEKLARACJA przeciazenia operatora >> tak bay wczytywal dane linia po linii
    friend ostream& operator<< (ostream&,Student const&);  //DEKLARACJA przeciazenia operatora << tak aby wypisywal obiekty typu Student
};


   istream& operator >> (istream& in, Student& s){
    cout << "Name\n";
    getline (cin,s.Name); //wczytanie linii na imię
    cout <<"ID\n";
    getline (cin,s.ID);   //wczytanie linii na ID
    cout <<"Gender\n";    
    getline (cin,s.Gender);
    cout <<"BirthDate\n";
    getline (cin,s.BirthDate);
    cout <<"Major\n";
    getline (cin,s.Major);
    return in;
    };
ostream& operator<< (ostream &wyjscie, Student const& ex)
{
   wyjscie<<""<<"Name:\t"<<ex.Name<<"\n"<<
    ""<<"Student ID:\t"<<ex.ID<<"\n"<<
    ""<<"Gender:\t"<<ex.Gender<<"\n"<<
    "BirthDate:\t"<<ex.BirthDate<<"\n"<<
    "Major:\t"<<ex.Major<<endl;
    return wyjscie;
}



int main(){
        Student s;
        cin>>s;
        cout<<s;
        return 0;
}
4

3 に答える 3

1

何がassert(false); しますか?

アサートウィンドウを開きます。これは、到達するはずのない制御パス、または失敗するはずのない条件がいつ到達するかをプログラマーに知らせるメカニズムです。

基本的に好き:

int divide10ByX(int x)
{
   if ( x == 0 )
   {
      assert(!"x can't be 0");
      return 0;
   }
   return 10/x;
}

の場合、プログラムx0通常クラッシュします。x事前にチェックすることで、クラッシュを防ぐことができますが、0であるはずがないため、間違った機能を隠すことができます。したがって、0である場合は常に、そこにアサートを配置して通知しますx

assert(x)または、がトリガーされる場合にのみトリガーされる可能性がありますx==0

于 2012-08-21T14:50:41.890 に答える
0

Visual Studioは商用製品であるため、Microsoftがそのような機能を提供しない限り、無料のオンラインVC++コンパイラに出くわすことはまずないでしょう。

マクロは、assert真のブール条件を検証するために使用されます。これは通常、コードの開発時に契約による設計などの一部として予想される条件を検証するために行われ、本番コードからコンパイルされます。つまり、デバッグが無効になっている場合です。

誤った条件が発生すると、メッセージがstderrに出力されabort()、呼び出されます。したがってassert(false)、(デバッグ中の)コードを特定の時点で強制的に中止するだけです。

于 2012-08-21T14:52:52.943 に答える
0

「オンライン コンパイラ」の背後にある意図が「無料」のコンパイラであり、完全にライセンスされたものを購入する前に、 Visual Studio Expressを使用できます。基本的なニーズのほとんどに対して完全に機能します。

于 2012-08-21T14:55:55.747 に答える