首先看一下下面一段**:
$a
=true;$b
=false
;var_dump
(strlen($a
));// 1
var_dump
(strlen($b
));// 0
在使用strlen
時布林變數會隱式轉化為字串,true
轉化為字串1
,false
轉化為空字串
,其轉化規則我們可以在php
原始碼中找到答案。
// 非字串型別轉化規則
zend_api void
zend_make_printable_zval
(zval *expr, zval *expr_copy,
int*use_copy)
switch
(z_type_p
(expr)
)else
break
;case is_resource:
// ...省略
case is_array:
z_strlen_p
(expr_copy)
=sizeof
("array")-
1;z_strval_p
(expr_copy)
=estrndup
("array"
,z_strlen_p
(expr_copy));
break
;case is_object:
// ... 省略
case is_double:
*expr_copy =
*expr;
zval_copy_ctor
(expr_copy)
;zend_locale_sprintf_double
(expr_copy zend_file_line_cc)
;break
;default
:*expr_copy =
*expr;
zval_copy_ctor
(expr_copy)
;convert_to_string
(expr_copy)
;break;}
z_type_p
(expr_copy)
= is_string;
*use_copy =1;
}
資料型別 隱式型別轉化
減號 乘號 除號 取模等都是隱式型別轉換 把字串變成數字 加號 轉換成字串 自加 自減 轉換成數字 大於 小於 仔細看清楚是數字的比較還是字串的比較 取反嘆號!把右邊的資料通通轉成布林值 雙等號 轉成布林值,只看值不看資料型別 如果轉換不成功,就會出現nan not a number alert 2...
C 隱式類型別轉化
隱式類型別轉換 可以用 單個形參來呼叫 的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換 1 class person2 5bool issamename const person person 8private 9 string mname 10int mage 11 12int mai...
js隱式型別轉化及運算
只有基本型別的資料下能進行運算 所有引用型別的資料,需要運算時候 先需要轉化為基本型別資料 再運算 所有引用型別資料只能轉化為字串.最後再由字串轉為其他型別 js資料型別型別分為基本資料型別和復合資料型別 引用資料型別 基本資料型別 string boolean number null undefi...