मैं एक .net कार्यक्रम में एक अजीब व्यवहार साक्षी हूँ:मेरा .NET Int64 का व्यवहार क्यों होता है जैसे कि वे Int32 थे?
Console.WriteLine(Int64.MaxValue.ToString());
// displays 9223372036854775807, which is 2^63-1, as expected
Int64 a = 256*256*256*127; // ok
Int64 a = 256*256*256*128; // compile time error :
//"The operation overflows at compile time in checked mode"
// If i do this at runtime, I get some negative values, so the overflow indeed happens.
क्यों मेरी Int64 के बर्ताव करता है जैसे कि वे थे Int32 के, हालांकि Int64.MaxValue पुष्टि करने के लिए लगता है कि वे 64 बिट्स का उपयोग कर रहे हैं?
यदि यह प्रासंगिक है, मैं एक 32 बिट ओएस का उपयोग कर रहा है, और इसलिए पूरे आपरेशन Int32
अंकगणित का प्रयोग कर किया जाता है लक्ष्य मंच,
डैंग आप जॉन स्कीट! तुमने मुझे लगभग 10 सेकंड तक हराया! :) –
मुझे बेवकूफ लगता है :) धन्यवाद! – Brann
आप बेवकूफ नहीं हैं, यह पहले थोड़ा सा अनजान है। तब तक मुझे काटा गया जब मुझे उम्मीद थी कि "डबल रेस = कुछ इंट/अन्य इंट" एक फ्लोटिंग प्वाइंट डिवीजन (जो यह नहीं करता) करता है और सीखा है कि बाएं हाथ की कोई फर्क नहीं पड़ता। –