PHP中强制类型转换运算符的优先级及代码执行顺序疑问
问题解答
首先明确:代码$x = (float)'100'/100;是先将字符串'100'强制转换为float类型,再执行除法运算。
原因很直接:在PHP的运算符优先级规则里,类型强制转换的优先级高于除法运算符。括号包裹的强制转换操作会被优先执行,把字符串'100'转换成浮点型的100.0之后,再和100做除法运算,最终得到结果1.0。
你可以通过实际运行代码验证:
$x = (float)'100'/100; var_dump($x); // 输出 float(1)
如果换个例子,优先级的差异会更直观:
// 先强制转成float再除法,结果是50.25 $y = (float)'100.5'/2; // 若先除法再转换(需加括号改变优先级),这里因PHP自动类型转换结果一致,但逻辑顺序不同 $z = (float)('100.5'/2);
本质上,强制转换属于PHP里优先级最高的操作之一,会比算术运算先被执行。
内容的提问来源于stack exchange,提问作者Toskan
相关产品推荐
相关产品推荐

