Trong C, trong bối cảnh không liên quan đến quảng bá số nguyên , các giá trị không dấu được chỉ định để hành xử như các thành viên của vòng đại số trừu tượng "bao bọc" (vì vậy đối với bất kỳ X và Y nào, XY sẽ mang lại một giá trị duy nhất, khi được thêm vào Y, sẽ mang lại X ), trong khi các kiểu số nguyên đã ký được chỉ định là hành vi giống như số nguyên khi các phép tính nằm trong một phạm vi nhất định và được phép làm bất cứ điều gì khi tính toán vượt quá điều đó. Tuy nhiên, ngữ nghĩa số trong C # là hoàn toàn khác nhau. Khi trong một bối cảnh số được kiểm tra, cả hai loại đã ký và không dấu đều hoạt động giống như các số nguyên được cung cấp tính toán nằm trong phạm vi và ném OverflowException
khi chúng không; trong một bối cảnh không được kiểm soát, cả hai đều hành xử giống như các vòng đại số.
Lần duy nhất thường đáng để sử dụng bất kỳ loại dữ liệu nào nhỏ hơn Int32
là khi cần đóng gói hoặc giải nén mọi thứ để lưu trữ hoặc vận chuyển nhỏ gọn. Nếu một người cần lưu trữ nửa tỷ số dương và tất cả chúng sẽ nằm trong phạm vi từ 0 đến 100, sử dụng mỗi byte thay vì bốn byte sẽ tiết kiệm được 1,5 gigabyte dung lượng lưu trữ. Đó là một khoản tiết kiệm lớn. Tuy nhiên, nếu một đoạn mã cần lưu trữ tổng cộng vài trăm giá trị, tuy nhiên, làm cho mỗi mã một byte thay vì bốn sẽ tiết kiệm khoảng 600 byte. Có lẽ không đáng bận tâm.
Đối với các loại không dấu, lần duy nhất chúng thực sự hữu ích là khi thực hiện trao đổi thông tin hoặc khi chia số thành các phần. Ví dụ, nếu người ta cần làm toán trên các số nguyên 96 bit, thì việc thực hiện các phép tính trên các nhóm ba số nguyên 32 bit không dấu sẽ dễ dàng hơn nhiều so với các nhóm số nguyên đã ký. Mặt khác, không có nhiều tình huống trong đó phạm vi của giá trị 32 hoặc 64 bit đã ký sẽ không đủ, nhưng cùng một kích thước của giá trị không dấu sẽ đủ.