편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.10.06

    php 정수의 오버플로우 타입 변환에 관해 질문하고 싶습니다.


    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>";
    ?>
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.10.05

    php 정수의 오버플로우 타입 변환에 관해 질문하고 싶습니다.


    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>";
    ?>