हमारे पास कुछ पूर्णांक अंकगणित है जो ऐतिहासिक कारणों से PHP पर समान कार्य करना है क्योंकि यह कुछ स्थाई रूप से टाइप की गई भाषाओं में करता है। चूंकि हमने आखिरी बार PHP को अपग्रेड करने के लिए व्यवहार को बदल दिया है। असल में हम निम्नलिखित सूत्र का उपयोग कर रहे हैं:फोर्स PHP पूर्णांक ओवरफ़्लो
function f($x1, $x2, $x3, $x4)
{
return (($x1 + $x2)^$x3) + $x4;
}
हालांकि, यहां तक रूपांतरण के साथ:
function f($x1, $x2, $x3, $x4)
{
return intval(intval(intval($x1 + $x2)^$x3) + $x4);
}
मैं अभी भी पूरी तरह से गलत संख्या के साथ समाप्त कर रहा हूँ ...
उदाहरण के लिए, $ x 1 के साथ = -1580033017, $ x2 = -2072974554, $ x3 = -1170476976) और $ x4 = -1007518822, मैं PHP में -30512150 और सी # में 1617621783 के साथ समाप्त होता हूं।
बस एक साथ $ x 1 और $ x2 जोड़ने मैं सही जवाब नहीं मिल सकता है:
सी # में मैं मिल
(-1580033017 + -2072974554) = 641959725
PHP में:
intval(intval(-1580033017) + intval(-2072974554)) = -2147483648
जो रूप में ही है:
intval(-1580033017 + -2072974554) = -2147483648
मुझे "इंटेगर ओवरफ्लोएड" फ़ंक्शन या कुछ लिखने पर कोई फर्क नहीं पड़ता है, लेकिन मुझे यह पता नहीं लगा सकता कि कैसे (-1580033017 + -2072974554) 641959725 के बराबर है। (मुझे पता है कि यह है -2147483648 + (2 * 2^31), लेकिन -2147483648 + 2^31 -1505523923 है जो Int.Min से अधिक है तो आप 2 * 2^31 और 2^31 क्यों नहीं जोड़ते हैं?)
किसी भी मदद की सराहना की जाएगी ...
मुझे लगता है कि आप PHP_INT_MAX मतलब है, नहीं PHP_MAX_INT । – scotts