Kết quả của abs (-2147483648) là -2147483648, phải không? có vẻ như không thể chấp nhận được.Tại sao giá trị tuyệt đối của số nguyên âm tối đa-2147483648 vẫn là -2147483648?
printf("abs(-2147483648): %d\n", abs(-2147483648));
đầu ra:
abs(-2147483648): -2147483648
Tôi tin rằng đây là hành vi không xác định. Tôi không có tiêu chuẩn C tiện dụng, vì vậy tôi không thể sao lưu nó. –
Bạn mong đợi điều gì, bởi vì 'abs (int)' trả về 'int'? –
Dự thảo mới nhất của C11 nói (7.21.6.1, về abs và bạn bè) "Nếu không thể đại diện cho kết quả , hành vi không xác định" –