получить значение абс длинного целого - PullRequest
1 голос
/ 31 декабря 2010

Я пытаюсь использовать приведенные ниже коды для получения значения abs длинного целого типа long;

long long v=abs(originalValue);

Это работает, как я ожидал, пока значение v не превысит 1073741824 (1G)

Если v равно 2147482648, абс (v) равно -2147482648.

Если v равно 10737418240, abs (v) также равно -2147482648.

Я не понимаю, по каким причинам это произошло.

Приветствую любой комментарий

Спасибо

InterDev

Ответы [ 2 ]

3 голосов
/ 31 декабря 2010

Используйте llabs() вместо:

long long v = llabs(originalValue);
1 голос
/ 31 декабря 2010

abs принимает в качестве аргумента int для длительного использования llabs

...