dmzld   3년 전

다익스트라 알고리즘에서

시작 노드부터 i번째 노드까지 최단 경로를 D[i] 배열로 표현하고 INT_MAX로 초기화 시켰는데요


마지막에 최단 경로가 존재하는지 판별하는 부분을 간단하게 하고자

A =( R1[v1] + R2[v2] + R3[N], R1[v2] + R3[v1] + R2[N]);

if (A1 >= INT_MAX || A1 < 0)
cout << -1;
else
cout << A;


이런 식으로 했더니 틀리더라구요

INT형 변수에 담긴 INT_MAX 끼리 더하면(즉 INT_MAX + INT_MAX)

다른 INT형 변수에 저장하기전에 어떻게 존재하나요?

저장한 후에는 음의 값을 가지는 쓰레기값이 되는 것으로 알고 있습니다.


그리고 이런 특성을 고려했을 때 코드를 더 간단하게 할 수 없을까요?
 

ckdgus2482   3년 전

rvalue라고 하더라도 자료형은 있습니다.

INT_MAX 정의부분을 봐야 알겠지만 int 타입이라면 + 연산 전에 더 큰 타입으로 명시적 캐스팅을 하지 않으면 산술 오버플로가 발생하겠죠

댓글을 작성하려면 로그인해야 합니다.