2012-02-15 11 views
12

PHP'nin belgelerine biraz seyrek ve son örneği bana kafa karıştırıcıNeden "echo strcmp ('60 ',' 100 ');" php çıkışı 5? Bu fonksiyon üzerindeki

echo strcmp('hello', 'hello'); 
//outputs 0 as expected - strings are equal. 
echo '<hr />'; 

echo strcmp('Hello', 'hello'); 
//outputs -32, a negative number is expected as 
//uppercase H has a lower ASCII value than lowercase h. 
echo '<hr />'; 

echo strcmp('60', '100'); 
//outputs 5. 

... Bu fonksiyon ASCII değerlerini karşılaştırır okudum böylece var. Neden pozitif bir sayı çıkardığını anlamıyorum. 60 '' arasında 6 = 54

  • toplam ASCII değerinin 0 = 48

  • ASCII Değeri = 49
  • 1 ASCII Değerinin

    • ASCII Değeri = (54 + 48) = '100' = (49 + + 48 48) = 145

    strcmp 102

  • toplam ASCII değeri() işlev s '60' ASCII değeri ve '100' arasında dize uzunluğu

    kimse neden açıklayabilir '60'

    daha büyük olduğu görülmektedir rağmen '100' den "büyük" olduğunu Aying?

    Teşekkür

  • cevap

    13

    strcmp() dizeleri arasındaki ilk eşleşmeyen karakteri farkını döndürür.

    6 - Bunun baktığınızda 1 5.

    olduğunu, muhtemelen karakter veya rakamı — sadece sayılar

    +6

    Bunun garantili bir davranış olmadığını unutmayın - garanti edilen tek şey, bu giriş parametreleri için değerin sıfırdan büyük olmasıdır. –

    +2

    @SimonRichter: Garanti edilmediğinden emin olun. Ama bu * geleneksel *. 1978'de yazdığım bazı kodlar, bu geri dönüş değeri hesaplamaya dayanıyor * hala çalışıyor *! – wallyk

    +0

    @wallyk, dokümantasyon ilk karakterin farkını döndürdüğünü söylemediğinde bu cevabın doğru olduğunu nereden biliyorsunuz? – Pacerier

    8

    ilk farkı strcmp() durur bulduğu Çünkü göremiyoruz. Bu nedenle '1' ASCII değeri ve 6 ''

    +0

    @wallyk, belgelerin ilk karakterin farkını döndürdüğünü söylemediğinde bu davranışın garanti edildiğini nereden biliyorsunuz? – Pacerier

    5

    6 ASCII değeri arasındaki fark bu sözcük karşılaştırmasıdır 1 den 5 "büyük" dir. İlk karakter farklı, karşılaştırmanın durduğu yer burası.