Câu trả lời:
Tùy thuộc vào loại biến của bạn, một trong những abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, hoặc fabsl(long double)
.
Các hàm này đều là một phần của thư viện chuẩn C và do đó có mặt cả trong Objective-C và C đơn giản (và thường có sẵn trong các chương trình C ++.)
(Than ôi, không có habs(short)
chức năng. Hoặc scabs(signed char)
cho vấn đề đó ...)
Các tiêu đề Objective-C của Apple và GNU cũng bao gồm một ABS()
macro không xác định kiểu. Tôi không khuyên bạn nên sử dụng ABS()
tuy nhiên nó không được đảm bảo là an toàn cho tác dụng phụ. Ví dụ, ABS(a++)
sẽ có một kết quả không xác định.
Nếu bạn đang sử dụng C ++ hoặc Objective-C ++, bạn có thể đưa vào <cmath>
tiêu đề và sử dụng std::abs()
, được tạo khuôn mẫu cho tất cả các loại số nguyên và dấu phẩy động tiêu chuẩn.
ABS()
không có tác dụng phụ an toàn cho tất cả các trình biên dịch, tuy nhiên, đó là lý do tại sao tôi không khuyên bạn nên sử dụng nó.
extern float fabsf(float); extern double fabs(double);