이 C 코드는 음수의 절대 값을 찾으려고하지만 출력도 음수입니다. 아무도 이것을 극복 할 수있는 방법을 말해 줄 수 있습니까?64 비트 정수의 절대 값과 관련된 문제
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <inttypes.h>
int main() {
int64_t a = 0x8000000000000000;
a = llabs(a);
printf("%" PRId64 "\n", a);
return 0;
}
출력
-9223372036854775808
UPDATE : 모든 답변
감사합니다. 나는 이것이 비표준적인 값이라는 것을 이해하며, 그 때문에 절대적인 조작을 수행 할 수 없다. 그러나 유전 프로그래밍 시뮬레이션 인 실제 코드베이스에서이 문제가 발생했습니다. 이 "유기체"는 C 표준에 대해 알지 못하고이 값을 생성한다고 주장합니다. 누군가이 문제를 해결할 효율적인 방법을 말할 수 있습니까? 다시 한번 감사드립니다.
감사합니다. 나는 llabs를 호출하기 전에 잘못된 값을 특별한 경우로 검사 할 것입니다. –