Biz tarihsel nedenlerle birkaç statik yazdığınız dilde olduğu gibi PHP aynı çalışmak zorunda bazı tamsayı aritmetiği var. Biz geçen taşan tamsayılar için PHP davranışı yükseltti beri değişti. Temelde biz şu formülü kullanarak:
function f($x1, $x2, $x3, $x4)
{
return (($x1 + $x2) ^ $x3) + $x4;
}
Ancak, hatta dönüşümleri ile:
function f($x1, $x2, $x3, $x4)
{
return intval(intval(intval($x1 + $x2) ^ $x3) + $x4);
}
Ben yine tamamen yanlış numara ile biten am ...
PHP -30512150 ve C # 1617621783 Örneğin, $ x1 = -1580033017, $ x2 = -2072974554, $ x3 = -1170476976 ile) ve $ x4 = -1007518822, ben sonuna kadar.
Sadece birlikte $ x1 ve x2 $ ben doğru cevabı alınamıyor ekleyerek:
C # alıyorum
(-1580033017 + -2072974554) = 641959725
PHP:
intval(intval(-1580033017) + intval(-2072974554)) = -2147483648
: aynı olan
intval(-1580033017 + -2072974554) = -2147483648
Ben bir "IntegerOverflowAdd" fonksiyonu ya da bir şey yazmaya umursamıyorum, ama ben oldukça (+ -2072974554 -1580033017) 641959725 eşittir nasıl anlamaya olamaz. (I) o -2147483648 + (2 * 2 ^ 31 olduğunu kabul edersiniz ama ^ 31 -2147483648 + 2 peki neden ^ 31 değil, 2 ^ 31 * 2 2 eklerim edilir int.min büyüktür -1505523923 nedir?)
Herhangi bir yardım mutluluk duyacağız ...