Мне нужно написать программу, которая принимает входные данные, состоящие из следующих значений, разделенных пробелами: int, long, char, float и double, соответственно, а затем печатать каждое из этих значений в новой строке в выходных данных.
Когда я пишу программу с использованием printf и scanf, она отлично работает.
#include<stdio.h>
int main()
{
int a;
long b;
char c;
float d;
double e;
scanf("%d %ld %c %f %lf", &a, &b, &c, &d, &e);
printf("%d\n%ld\n%c\n%f\n%lf", a, b, c, d, e);
return 0;
}
Но когда я использую cin и cout, возникает некоторая проблема.Это происходит, когда вводимый номер long длиннее LONG_MAX.
#include<iostream>
using namespace std;
int main()
{
int intNumber;
long longNumber;
char character;
float floatNumber;
double doubleNumber;
cin>>intNumber>>longNumber>>character>>floatNumber>>doubleNumber;
cout<<intNumber<<"\n"<<longNumber<<"\n"<<character<<"\n"<<floatNumber<<"\n"<<doubleNumber;
return 0;
}
Например, если ввод 211916801 97592151379235457 p 19856.992 -5279235.721231465, вывод первой программы будет
211916801
97592151379235457
p
19856.992
-5279235.721231465
Но вторая программа вышла
211916801
2147483647
╠
-1.07374e+08
-9.25596e+61
Что именно здесь происходит?