我有3种不同的行为:
var_dump((int) true); // returns 1
var_dump((int) true && true); // returns true
var_dump((int) (true && true)); // returns 1
为什么?
答案 0 :(得分:2)
因为首先完成铸造然后进行AND操作,所以最终得到1&&这是真的
答案 1 :(得分:1)
(int)true && true;
// same as:
((int) true) && true;
// same as:
1 && true; // = true
答案 2 :(得分:1)
(int) true
将整数转换为TRUE(给出1)
(int) true && true
将第一个TRUE转换为整数(给出1),然后使用第二个TRUE(将1重新转换为布尔值)转换为TRUE
(int) (true && true)
ANDs TRUE和TRUE(给定TRUE),然后转换为ain整数(给1)
答案 3 :(得分:1)
在第一种情况下,简单类型转换将起作用
var_dump((int) true); // returns 1
在第二种情况下,第一个参数将首先进行类型转换,然后是&&将执行的操作将返回......通常为真
var_dump((int) true && true); // returns true
在第三种情况下,将首先执行将返回true的操作,然后将执行将转换为true的类型转换操作
var_dump((int) (true && true)); // returns 1