php에서 오버플로우가 발생하면 자동으로 타입 변환이 된다는데, 정수형 변수의 표현 범위를 초과하는 경우 발생되는 오버플로우와 데이터 타입 변환 결과를 확인할 수 있는 프로그램을 작성하였습니다. 예상 결과로는
1.변수 $num
의 출력 결과 : int(2147483647)
2.변수 $num +1
의 출력 결과 : float(2147483648)
이렇게 되어야 하는데 2번의 결과가
2.변수$num +1
의 출력 결과 : int(2147483648)
이렇게 형변환이 되지 않은 결과가 나옵니다. 왜 그런건가요?
(공부하고 있는 책의 예제 코드를 그대로 옮긴 것입니다.)
<?php //정수의 오버플로우 타입 변환
echo "<br>▲ 정수의 오버플로우 타입 변환<br>";
echo"============================<br>";
$num=2147483647;
echo"1.변수 \"\$num\"의 출력 결과 : ";
var_dump($num); // 선언된 변수의 데이터 타입과 값 출력
echo"<br>......[정수형으로 출력]<br><br>";
echo"============================<br>";
$num+=1;
echo"2.변수 \"\$num +1\"의 출력 결과 : ";
var_dump($num);
echo"<br>......[실수형으로 출력]<br><br>";
?>