Em C, em contextos que não envolvem promoção inteira , valores não assinados foram especificados para se comportarem como membros de um anel algébrico abstrato "empacotado" (portanto, para qualquer X e Y, XY produzirá um valor exclusivo que, quando adicionado a Y, produzirá X ), enquanto tipos de números inteiros assinados foram especificados como se comportando como números inteiros quando os cálculos permaneceram dentro de um determinado intervalo e permitiram fazer qualquer coisa quando os cálculos foram além disso. A semântica numérica em C #, no entanto, é totalmente diferente. Quando em um contexto numérico verificado, os tipos assinado e não assinado se comportam como números inteiros, desde que os cálculos fiquem dentro do alcance e sejam lançados OverflowExceptionquando não o fazem; em um contexto não verificado, ambos se comportam como anéis algébricos.
Geralmente, é o único momento em que vale a pena usar qualquer tipo de dados menor do Int32que o necessário para empacotar ou descompactar itens para armazenamento ou transporte compacto. Se for necessário armazenar meio bilhão de números positivos, e todos eles estarão no intervalo de 0 a 100, usar um byte cada em vez de quatro economizará 1,5 gigabytes de armazenamento. Isso é uma grande economia. Se um pedaço de código precisar armazenar um total de algumas centenas de valores, no entanto, transformar cada um em um byte em vez de quatro economizaria cerca de 600 bytes. Provavelmente não vale a pena se preocupar.
No que diz respeito aos tipos não assinados, as únicas vezes em que são realmente úteis são na troca de informações ou na subdivisão de números em partes. Se, por exemplo, for necessário fazer cálculos em números inteiros de 96 bits, provavelmente será muito mais fácil executar os cálculos em grupos de três números inteiros de 32 bits não assinados do que em grupos de números inteiros assinados. Caso contrário, não há muitas situações em que o intervalo de um valor assinado de 32 ou 64 bits seria inadequado, mas o mesmo tamanho de valor não assinado seria suficiente.