मैं GNU के C ++ कंपाइलर पर इस कोड की कोशिश कर रहा हूं और इसके व्यवहार को समझने में असमर्थ हूं:
#include <stdio.h>;
int main()
{
int num1 = 1000000000;
long num2 = 1000000000;
long long num3;
//num3 = 100000000000;
long long num4 = ~0;
printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
printf("%d %ld %lld %llu", num1, num2, num3, num4);
return 0;
}
जब मैं टिप्पणी लाइन को अनसुना कर देता हूं, तो कोड संकलित नहीं होता है और एक त्रुटि दे रहा है:
त्रुटि: पूर्णांक स्थिरांक लंबे प्रकार के लिए बहुत बड़ा है
लेकिन, अगर कोड को संकलित किया जाता है और इसे निष्पादित किया जाता है, तो यह 10000000000 से अधिक मूल्य का उत्पादन करता है।
क्यों?
<stdint.h>
और उपयोग करेंuint64_t
। 64 बिट मान प्रदर्शित करने के लिए,printf( "%" PRIu64 "\n", val);