Без ()
вокруг $a + $b
код интерпретируется как
return ((int)$a) + $b;
, поскольку приоритет оператора (int)
выше, чем у +
(см. Руководство ), который в этом случае будет
((int)1.2) + 5.2
=>
1 + 5.2
=>
6.2
Несмотря на то, что первое значение в этом выражении является целым числом, поскольку второе - это число с плавающей запятой, PHP выполнит жонглирование типа и также преобразовать первое значение в число с плавающей запятой, поэтому результатом выражения является число с плавающей запятой, которое не может быть возвращено addNumbers
, поскольку объявлено, что оно возвращает int
.
Byесли вставить ()
, выражение интерпретируется как
(int)(1.2+5.2)
=>
(int)6.4
=>
6
, которое можно вернуть.