shfshfdl   6년 전

안녕하세요 counting sort를 통해 문제를 해결하였지만

형변환에 대해 이해가 되지 않아 문의드립니다.

같은 소스에 첫번째는 fail 두번째는 성공합니다.

첫번째의 경우 반올림을 위해 0.5를 더하고 (int)로 형변환하여 출력하였는데

차이가 발생하는 이유가 무엇일까요?


    printf("%d\n",      (int)((double)acc[N - 1] / (double)N + 0.5));
    printf("%.0lf\n",         ((double)acc[N - 1] / (double)N)      );

djm03178   6년 전

위의 방법은 음수일 경우에 부정확해집니다. 다음의 경우에 위는 0을 출력합니다.

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