mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
311 lines
9.6 KiB
XML
311 lines
9.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 8859c8b96cd9e80652813f7bcf561432a5e9f934 Maintainer: nilgun Status: ready -->
|
||
<sect1 xml:id="language.types.integer">
|
||
<title>int</title>
|
||
|
||
<simpara>
|
||
Bir <type>int</type> türünde değer şu kümeden bir tamsayıdır:
|
||
ℤ = {..., -2, -1, 0, 1, 2, ...}.
|
||
</simpara>
|
||
|
||
<sect2 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><link linkend="language.types.float">Kayan noktalı sayılar</link></member>
|
||
<member><link linkend="book.bc">Keyfi ondalık hassasiyet / BCMath</link></member>
|
||
<member><link linkend="book.gmp">Keyfi uzunlukta tamsayı / GMP</link></member>
|
||
</simplelist>
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.integer.syntax">
|
||
<title>Sözdizimi</title>
|
||
|
||
<simpara>
|
||
<type>int</type> türünde değerler onluk, sekizlik veya onaltılık
|
||
tabanda belirtilebilirler.
|
||
<link linkend="language.operators.arithmetic">değil işleci</link>
|
||
negatif bir <type>int</type> belirtmekte kullanılabilir.
|
||
</simpara>
|
||
|
||
<para>
|
||
Sekizlik gösterimde sayıların önüne <literal>0</literal> (sıfır),
|
||
onaltılık gösterimde <literal>0x</literal> ve ikil gösterimde
|
||
<literal>0b</literal> getirilir.
|
||
PHP 8.1.0 ve sonrasında sekizlik gösterim ayrıca, <literal>0o</literal>
|
||
veya <literal>0O</literal> ile öncelenmiş de olabilir.
|
||
</para>
|
||
|
||
<para>
|
||
PHP 7.4.0'dan itibaren, tamsayı değişmezleri, değişmez değerlerin daha
|
||
iyi okunabilirliği için rakamlar arasında alt çizgi (<literal>_</literal>)
|
||
içerebilir. Bu alt çizgiler PHP'nin tarayıcısı tarafından kaldırılır.
|
||
</para>
|
||
|
||
<example>
|
||
<title>- Tamsayı değişmezler</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$a = 1234; // onluk sayı
|
||
$a = -123; // negatif sayı
|
||
$a = 0123; // sekizlik sayı (onluk: 83)
|
||
$a = 0o123; // sekizlik sayı (PHP 8.1.0 ve sonrası)
|
||
$a = 0x1A; // onaltılık sayı (onluk: 26)
|
||
$a = 0b11111111; // ikil sayı (onluk: 255)
|
||
$a = 1_234.567; // onluk sayı (PHP 7.4.0 ve sonrası)
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
|
||
<para>
|
||
PHP 8.1.0'dan itibaren, biçimsel olarak, int değişmezlerinin yapısı
|
||
(evvelce, <literal>0o</literal> ve <literal>0O</literal> sekizlik
|
||
öneklerine ve PHP 7.4.0'dan önce alt çizgilere izin verilmezdi):
|
||
</para>
|
||
|
||
<informalexample>
|
||
<programlisting>
|
||
<![CDATA[
|
||
onluk : [1-9][0-9]*(_[0-9]+)*
|
||
| 0
|
||
|
||
onaltılık : 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*
|
||
|
||
sekizlik : 0[oO]?[0-7]+(_[0-7]+)*
|
||
|
||
ikil : 0[bB][01]+(_[01]+)*
|
||
|
||
tamsayı : onluk
|
||
| onaltılık
|
||
| sekizlik
|
||
| ikil
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
|
||
<para>
|
||
Bir <type>int</type> türün genişliği platforma göre değişir. 32 bitlik
|
||
sistemlerde azami değer 2 milyon civarında iken 64 bitlik sistemlerde 9E18
|
||
civarındadır. PHP işaretsiz tamsayıları (C'deki unsigned) desteklemez.
|
||
<type>int</type> türün genişliği <constant>PHP_INT_SIZE</constant>
|
||
sabitine, olası en büyük değeri <constant>PHP_INT_MAX</constant>
|
||
sabitine ve en küçük değeri ise <constant>PHP_INT_MIN</constant>
|
||
sabitine atanmıştır.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.integer.overflow">
|
||
<title>Tamsayılarda taşma</title>
|
||
|
||
<para>
|
||
PHP, <type>int</type> türünde bir değerin bellekte <type>int</type> türüne
|
||
ayrılan genişliğe sığmadığını saptarsa <type>float</type> türünde bir
|
||
değer olarak ele alır ve bu durum yapılan bir işlem sırasında ortaya
|
||
çıkmışsa işlemden dönen değer <type>float</type> türünde olur.
|
||
</para>
|
||
|
||
<example>
|
||
<title>- Tamsayı taşması</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$büyük_sayı = 50000000000000000000;
|
||
var_dump($büyük_sayı); // float(5.0E+19)
|
||
|
||
var_dump(PHP_INT_MAX + 1); // 32-bit sistem: float(2147483648)
|
||
// 64-bit sistem: float(9.2233720368548E+18)
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.integer.division">
|
||
<title>Tamsayı Bölme</title>
|
||
|
||
<para>
|
||
PHP'de sonucun <type>int</type> türünde elde edileceği bir bölme
|
||
işleci mevcut değildir, bunu sağlamak için <function>intdiv</function>
|
||
işlevini kullanın. <literal>1/2</literal> işleminin sonucu
|
||
<type>float</type> türünde <literal>0.5</literal> değeridir. Bu değer
|
||
(<type>int</type>) ile çarpıtılarak sıfıra yuvarlamak suretiyle bir
|
||
tamsayıya dönüştürülebilirse de <function>round</function> işlevini
|
||
kullanırsanız dönüşümün nasıl yapılacağını kendiniz belirleyebilirsiniz.
|
||
</para>
|
||
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
var_dump(25/7); // float(3.5714285714286)
|
||
var_dump((int) (25/7)); // int(3)
|
||
var_dump(round(25/7)); // float(4)
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.integer.casting">
|
||
<title><code>int</code> türüne dönüşüm</title>
|
||
|
||
<simpara>
|
||
Bir değeri doğrudan <type>int</type> türüne dönüştürmek için
|
||
<literal>(int)</literal> veya <literal>(integer)</literal> çarpıtmasını
|
||
kullanabilirsiniz. Ancak, çoğu durumda türü çarpıtmak gerekmez, bir
|
||
<type>int</type> değer gerektiren bir işlev veya denetim yapısı, değeri
|
||
kendiliğinden <type>int</type> türüne dönüştürecektir. Ayrıca, bir değer
|
||
<type>int</type> türüne <function>intval</function> işleviyle de
|
||
dönüştürülebilir.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Bir <type>resource</type> bir <type>inte</type> sayıya dönüştürülürse,
|
||
sonuç, PHP tarafından çalışma anında özkaynağa atanan eşsiz özkaynak
|
||
numarası olacaktır.
|
||
</simpara>
|
||
|
||
<simpara>
|
||
Ayrıca, <link linkend="language.types.type-juggling">Tür Dönüşümü</link>
|
||
bölümüne de bakınız.
|
||
</simpara>
|
||
|
||
<sect3 xml:id="language.types.integer.casting.from-boolean">
|
||
<title><link linkend="language.types.boolean"><code>bool</code></link>
|
||
türünden dönüşüm</title>
|
||
|
||
<simpara>
|
||
&false;, <literal>0</literal>'a (sıfır); &true;, <literal>1</literal>'e
|
||
(bir) dönüştürülür.
|
||
</simpara>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="language.types.integer.casting.from-float">
|
||
<title><link linkend="language.types.float"><code>float</code></link>
|
||
türünden dönüşüm</title>
|
||
|
||
<simpara>
|
||
<type>float</type> türünden <type>int</type> türüne dönüşümde sayı
|
||
<emphasis>sıfıra yaklaştırılarak</emphasis> yuvarlanır. PHP 8.1.0 ve
|
||
sonrasında, örtük dönüşümdeki hassasiyet kaybından dolayı işlemin
|
||
önerilmediğini belirten bir uyarı çıktılanmaktadır.
|
||
</simpara>
|
||
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
function foo($value): int {
|
||
return $value;
|
||
}
|
||
|
||
var_dump(foo(8.1)); // "Önerilmiyor: float 8.1 değerin int türüne örtük
|
||
// olarak dönüştürülmesi hassasiyet kaybı oluşturduğundan PHP 8.1.0 ve
|
||
// sonrasında önerilmemektedir.
|
||
var_dump(foo(8.1)); // PHP 8.1.0 öncesinde 8
|
||
var_dump(foo(8.0)); // Her iki durumda 8
|
||
|
||
var_dump((int) 8.1); // Her iki durumda 8
|
||
var_dump(intval(8.1)); // Her iki durumda 8
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
|
||
<para>
|
||
Dönüşüm sonucu <type>int</type> türüne ayrılan genişliğe (normalde
|
||
32 bitlik sistemlerde <literal>+/- 2.15e+9 = 2^31</literal>,
|
||
64 bitlik sistemlerde ise <literal>+/- 9.22e+18 = 2^63</literal>)
|
||
sığmıyorsa, <type>float</type> türün hassasiyeti <type>int</type> türünde
|
||
tam bir sonuç vermeyeceğinden sonuç tanımsızdır. Bu durumda ne bir uyarı
|
||
ne de bir bilgi verilir!
|
||
</para>
|
||
|
||
<note>
|
||
<para>
|
||
<type>int</type> türüne çarpıtıldığında <literal>NaN</literal>,
|
||
<literal>Inf</literal> ve <literal>-Inf</literal> daima sıfır
|
||
olacaktır.
|
||
</para>
|
||
</note>
|
||
|
||
<warning>
|
||
<para>
|
||
Ondalık kısmı <type>int</type> türüne asla dönüştürmeyin, yoksa
|
||
beklenmedik sonuçlar elde edebilirsiniz.
|
||
</para>
|
||
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
echo (int) ( (0.1+0.7) * 10 ); // çıktısı: 7!
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
|
||
<para>
|
||
Ayrıca bakınız: <link linkend="warn.float-precision">Kayan noktalı
|
||
sayılarda hassasiyet</link> uyarısı.
|
||
</para>
|
||
</warning>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="language.types.integer.casting.from-string">
|
||
<title><type>string</type> türünden dönüşüm</title>
|
||
|
||
<simpara>
|
||
Dizge <link linkend="language.types.numeric-strings">sayısal</link>
|
||
veya öncü sayısal ise, karşılık gelen tamsayı değerine çözümlenir,
|
||
aksi takdirde sıfıra (<literal>0</literal>) dönüştürülür.
|
||
</simpara>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="language.types.integer.casting-from-null">
|
||
<title><type>NULL</type> türünden dönüşüm</title>
|
||
|
||
<simpara>
|
||
&null; daima sıfıra dönüşür (<literal>0</literal>).
|
||
</simpara>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="language.types.integer.casting.from-other">
|
||
<title>Diğer türlerden dönüşüm</title>
|
||
|
||
<caution>
|
||
<simpara>
|
||
Diğer türlerden <type>int</type> türüne dönüşümün nasıl davranacağı
|
||
henüz kesin olarak tanımlanmamıştır. Gözlemlediğiniz bir davranışın
|
||
doğruluğuna güvenmeyiniz, ileride bu davranış hiçbir bilgi verilmeden
|
||
değiştirilebilir.
|
||
</simpara>
|
||
</caution>
|
||
</sect3>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|