-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;
}

x什么时候0,程序通常会崩溃。通过事先检查,您可以防止崩溃,但可以隐藏一些错误的功能,因为x不应该为 0。因此,您在此处放置了一个断言以在x为 0 时通知您。

或者,它可能是assert(x),仅在 时触发x==0

于 2012-08-21T14:50:41.890 回答
0

由于 Visual Studio 是一种商业产品,我猜你不太可能遇到免费的在线 VC++ 编译器,除非 Microsoft 提供这样的工具。

assert宏用于验证真正的布尔条件。这通常是为了验证预期条件作为按合同设计的一部分或在开发代码时进行类似的操作,并且是从生产代码中编译出来的,即在禁用调试时。

遇到错误条件将导致消息输出到 stderr 并被abort()调用。因此assert(false)只是强制代码(在调试中)在某个点中止。

于 2012-08-21T14:52:52.943 回答
0

如果在购买完全许可的编译器之前,您的“在线编译器”意图是“免费”编译器,则可以使用Visual Studio Express。它可以满足大多数基本需求。

于 2012-08-21T14:55:55.747 回答