首頁  >  問答  >  主體

關於php 位元運算 移位的疑惑

var_dump( (pack("C" , 1)<<1) ==pack("C" , 1) );
為什麼是true呢

PHP中文网PHP中文网2713 天前428

全部回覆(1)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-16 13:11:55

    牽涉到php 比較的時候,型別轉換
    1、pack("C" , 1)<<1 , 結果是int(0)
    2、pack("C" , 1) , 結果是string("")

    其實簡化成了 0 == "" 的比較

    PHP 在比较的时候,如果类型不相等,会进行类型转换
    這裡就會把 string("") 轉換成 int 型,也就是會變成 int(0),所以這裡回傳 true

    你要嚴格判斷,可以使用 ===

    var_dump( (pack("C" , 1)<<1) ===pack("C" , 1) ); 結果是 false

    回覆
    0
  • 取消回覆