此 C 代码试图找到负数的绝对值,但输出也是负数。谁能告诉我如何克服这个问题?
#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
更新:
感谢您的所有回答。我知道这是一个非标准值,这就是我无法对其执行绝对操作的原因。但是,我确实在遗传编程模拟的实际代码库中遇到了这种情况。此处的“有机体”不了解 C 标准并坚持生成此值:) 谁能告诉我解决此问题的有效方法?再次感谢。