-1

我有一个用 C++ 编写的程序,要求用户输入他/她的 11 位手机号码。但是当我输入 11 位数字时,程序continue没有执行后续代码。

 string FriendName, FriendAdd,  EmailAdd;
 long MobileNumber, counter, counter1, counter2;
 //Create a new structure
 struct personData {
   string namePerson, addressPerson, emailAddress;
   long age;
   struct personData *next;
 };

//Initialize pointers to personData structure
typedef struct personData node;

node *firstRec, *currentRec, *tempRec, *tempRec2;

void InsertRec() {
  cin.ignore(200,'\n');

  cout<<"Enter your Friend's Name            : ";
  cin.ignore(1,'\n');
  getline(cin,FriendName);
  cout<<"Enter your Friend's Mobile Number   : ";
  cin>>MobileNumber;
  cout<<"Enter your Friend's Address         : ";
  cin.ignore(1,'\n');
  getline(cin,FriendAdd);
  cout<<"Enter your Friend's Email Add       : ";
  getline(cin,EmailAdd);
  cout<<endl<<endl;

  tempRec = new(personData);
  tempRec->namePerson = FriendName;
  tempRec->addressPerson = FriendAdd;
  tempRec->emailAddress = EmailAdd;
  tempRec->age = MobileNumber;
  tempRec->next=firstRec;
  //firstRec->next=tempRec;

  firstRec=tempRec;
}
4

3 回答 3

4

整数类型的大小取决于目标平台和编译器设置。假设它long是一个 32 位整数,它只支持 10 位数字。

32 位整数类型的最大值为:

有符号:-2147483647 到 2147483647
无符号:0 到 4294967295

更好的方法是将手机号码存储为字符串,而不是数字。

于 2012-12-18T11:00:01.360 回答
1

电话号码不是整数,它是一串数字。

有符号整数(用于 32 位整数,取决于您的平台和编译器)可以包含的最大数字是 +2,147,483,647。这是10位数字。

于 2012-12-18T10:59:42.370 回答
1

这是您选择使用手机号码的数据类型的问题。输入手机号码后,再次打印,看是否显示相同的值。您的 11 位数值超出long限制。

于 2012-12-18T11:07:36.517 回答