Rumah  >  Soal Jawab  >  teks badan

关于php 位运算 移位的疑惑

var_dump( (pack("C" , 1)<<1) ==pack("C" , 1) );
为什么是true呢

PHP中文网PHP中文网2713 hari yang lalu429

membalas semua(1)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-05-16 13:11:55

    Apabila bercakap tentang perbandingan PHP, taip penukaran
    1, pack("C", 1)<<1, hasilnya adalah int(0)
    2, pack("C", 1), hasilnya ialah rentetan (" ")

    Malah, ia dipermudahkan kepada perbandingan 0 == ""

    PHP akan melakukan penukaran jenis jika jenis tidak sama semasa perbandingan PHP 在比较的时候,如果类型不相等,会进行类型转换
    这里就会把 string("") 转换成 int 类型,也就是会变成 int(0),所以这里返回 true

    你要严格判断,可以使用 ===Di sini rentetan("") akan ditukar kepada jenis int, iaitu, ia akan menjadi int(0), jadi di sini Kembalikan benar

    Anda perlu menilai dengan tegas, anda boleh menggunakan ===

    🎜var_dump( (pack("C" , 1)<<1) ===pack("C" , 1) );

    balas
    0
  • Batalbalas