Rumah  >  Soal Jawab  >  teks badan

php - Apakah kesan pas rujukan ampersand pada hasil operasi?

$a = 1;
$b = &$a; //Alamat pas. Mengulas baris ini mengembalikan 5. Jika ia tidak diulas (versi PHP <7), ia mengembalikan 6
$c = (++$a) + (++$a);
echo $c;
Adakah ia berkaitan ke versi? Juga, hasilnya adalah 6, yang sangat membingungkan saya

PHP中文网PHP中文网2676 hari yang lalu688

membalas semua(3)saya akan balas

  • typecho

    typecho2017-06-21 10:12:41

    Mari kita bincangkan dahulu tentang operasi menambah tugasan rujukan

    $b = &$a;

    Operasi ini boleh dianggap bahawa semua operasi $a$b都指向原本$a变量所在的那块内存(为了方便后面解释,称为内存X),也就是说,后面任何对于$a或者$b secara langsung mengubah suai nilai dalam ingatan ini.

    Jadi proses berjalan selepas menambah baris ini:

    1. Langkah sebelumnya ditinggalkan, huruf awal a ialah 1

    2. Nilai yang disimpan dalam
    3. $c = (++$a) + (++$a)的两次++$a都是在操作内存X,也就是把内存X里的值自增了两次,所以,在运算$c的值的时候,取的是这个内存里数的值,也就是自增了两次之后的内存X里的值。所以,是3 + 3 = 6(运算$c时候,内存X ialah 3).

    Jom bincang tentang pembedahan selepas komen rujukan

    Jika tidak dipetik, maka bagi $a的自增接操作直接修改内存X,而后通过运算符操作返回内存X的副本,这样,两次的++$a结果由于不是直接从内存X获取的,而是改变内存X值之后的副本,所以$c在运算的时候就是2 + 3 = 5.

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-06-21 10:12:41

    Ini berkaitan dengan pelaksanaan asas PHP Ini adalah cerita yang panjang Adalah disyorkan untuk melihat analisis masalah yang sama pada github
    Penjelajahan yang disebabkan oleh pepijat PHP:
    https://github.com/xurenlu. /ph...

    balas
    0
  • 学习ing

    学习ing2017-06-21 10:12:41

    Anda keluarkan C, apa kaitan C dengan B anda?

    balas
    0
  • Batalbalas