Tôi có một câu hỏi rất đơn giản gây trở ngại cho tôi trong một thời gian dài. Tôi đang xử lý các mạng và cơ sở dữ liệu nên rất nhiều dữ liệu tôi đang xử lý là các bộ đếm 32 bit và 64 bit (không dấu), id nhận dạng 32 bit và 64 bit (cũng không có ánh xạ có ý nghĩa cho dấu hiệu). Tôi thực tế không bao giờ đối phó với bất kỳ vấn đề từ thực sự có thể được thể hiện dưới dạng một số âm.
Tôi và đồng nghiệp của tôi thường xuyên sử dụng các loại không dấu như uint32_t
và uint64_t
cho các vấn đề này và vì nó thường xảy ra nên chúng tôi cũng sử dụng chúng cho các chỉ mục mảng và sử dụng số nguyên phổ biến khác.
Đồng thời, các hướng dẫn mã hóa khác nhau mà tôi đang đọc (ví dụ Google) không khuyến khích sử dụng các kiểu số nguyên không dấu và theo như tôi biết thì cả Java và Scala đều không có kiểu số nguyên không dấu.
Vì vậy, tôi không thể tìm ra đâu là điều đúng đắn: sử dụng các giá trị đã ký trong môi trường của chúng tôi sẽ rất bất tiện, đồng thời hướng dẫn mã hóa để khăng khăng thực hiện chính xác điều này.