계산기에서 어떤 수를 0으로 나누면 위와 같이 오류를 내뱉습니다.
프로그래밍에서도 마찬가지로 변수에 / 0을 하면 오류를 내뱉습니다.
왜 그럴까요?
나눗셈은 일반적으로 곱셈의 역연산으로 정의됩니다.
x × y = z이면 곧 x = z ÷ y입니다.
즉, 5 × 3 = 15이면 곧 5 = 15 ÷ 3이 되는 것입니다.
만약 여기서 y의 값이 0이 된다면, 즉, x × 0 = z, x = z ÷ 0이 된다면
어떤 수든 0을 곱하면 0이 되므로
앞의 x × 0 = z는 곧 x × 0 = 0이 됩니다.
여기서 x의 가능성은 무한히 많아져서 하나로 정의될 수가 없습니다.
그렇기 때문에 어떤 수를 0으로 나눈 값은 정의되지 않는 것입니다.
출처: 위키백과의 0으로 나누기 ([바로가기])
이쯤에서 각설하고 본론으로 들어가서
만약 알만툴에서 변수에다가 나누기 0을 하면 과연 어떻게 될까 실험을 해 보았습니다.
첫 번째 방법
변수의 조작에서 그냥 나누기 0 하기
이렇게 그냥 단순하게 변수 / 0 이벤트를 짠 후 플레이 테스트를 돌려 보았습니다.
0으로 나누기를 할 변수를 사전에 조작하여 1로 만든 후
변수 / 0 이벤트를 실행해 보았습니다.
결과는...
튕기지 않고 그냥 넘어갔습니다.
단지 0으로 나누기를 돌린 변수가 0이 되었을 뿐입니다.
이렇게 나오는 게 어째 모순 같지만(실제로 y=1/x 함수의 그래프를 그려보면 x값이 0에 가까워질수록 y값은 무한대에 가까워집니다.)
어쨌든 오류로 튕기진 않은 게 다행(?)이네요.
알만툴에서 0으로 나누기를 할 경우 연산이 실행되지 않도록 설계한 모양입니다.
두 번째 방법
스크립트를 이용해서 나누기 0 하기
변수의 조작이 아닌 스크립트로 나누기 0으로 해 보았습니다.
과연 이번엔 어떻게 될까요?
무서운 재앙을 예고하는 대사와 함께...
이와 같이 0으로 나누었다는 오류를 내뱉으며 게임이 튕깁니다.
스크립트를 뜯어 본 결과 변수의 조작을 통해 오류를 일으킬 경우
문제의 변수 값을 0으로 맞춰놓고 계속 진행시키는 처리가 되어 있었습니다.
그래서 첫 번째 방법을 사용할 경우 튕기지 않고 게임이 진행되었습니다.
그러나 두 번째 방법은 이 처리를 우회하기 때문에 튕기게 되는 것입니다.