-1

ユーザーに11桁の携帯電話番号を入力するように求めるC++で記述されたプログラムがあります。しかし、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

携帯電話番号を取得するために選択したデータ型の問題です。携帯電話番号を入力後、もう一度印刷して、同じ値が表示されるかどうかを確認してください。11 桁の値がlong制限を超えています。

于 2012-12-18T11:07:36.517 に答える
1

電話番号は整数ではなく、数字の文字列です。

符号付き整数 (プラットフォームとコンパイラによって使用される 32 ビット整数) に含めることができる最大数は +2,147,483,647 です。これは10桁です。

于 2012-12-18T10:59:42.370 に答える