ठीक है, इसलिए मुझे सी ++ iostreams के साथ कुछ समस्याएं हैं जो बहुत अजीब लगती हैं, लेकिन यह शायद परिभाषित व्यवहार है, क्योंकि यह एमएसवीसी ++ और जी ++ दोनों के साथ होता है।पूर्णांक ओवरफ़्लो C++ iostreams के साथ त्रुटियों का कारण क्यों बनता है?
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << a << endl;
cin >> a;
cout << a << endl;
return 0;
}
मैं जानबूझकर अतिप्रवाह एक int की अधिकतम सीमा से बड़ा है कि एक मूल्य CIN पहले देकर, cin.operator>>()
करने के लिए सभी आगे कॉल तुरंत किसी कारण से वापस आ जाएगी, तो:
मैं इस कार्यक्रम है कहो , और a
कुछ मूल्य पर सेट है। मान अपरिभाषित प्रतीत होता है।
क्यों, और यह व्यवहार कहां दस्तावेज किया गया है? क्या ऐसा पता लगाने का कोई तरीका है कि ऐसा अतिप्रवाह हुआ है या नहीं?
इसके अलावा, यह वही प्रोग्राम काम करता है जैसा मेरा इरादा है। यदि मैं मान को ओवरफ़्लो करता हूं, तो यह a
कुछ मान देगा, और जारी रहेगा जैसे अतिप्रवाह कभी नहीं हुआ।
#include <cstdio>
using namespace std;
int main()
{
int a;
scanf("%d", &a);
printf("%d\n", a);
scanf("%d", &a);
printf("%d\n", a);
scanf("%d", &a);
printf("%d\n", a);
return 0;
}