none
Diferença prática entre unsigned int e int RRS feed

  • Pergunta

  • Olá pessoal. Sou especialista em pen test e engenharia reversa. Após fazer engenharia reversa em alguns trabalhos antigos de faculdade, notei algo que não tinha notado ainda e nem parado para pensar.

    Oras, todas as variáveis são na verdade áreas de memória. Logo não existe uma diferença real entre um int e um unsined int.

    Ou seja, se você diz: int a=-5, ou int a=4294967291, será movido o mesmo número para um registrador ou para um endereço de memória (que será FFFFFFFB).

     O C99 diz:

    "Para cada tipo inteiro com sinal, existe um correspondente (mas diferente) tipo inteiro sem sinal (designado pela palavra-chave unsigned) que utiliza o mesmo espaço (incluindo a informação do sinal) e tem os mesmos requisitos de alinhamento"

    Então, afinal, qual será a diferença prática entre os dois?

    Obrigado desde já.
    segunda-feira, 23 de novembro de 2009 11:29

Respostas

  • a sua observação inicial é válida

    a diferença prática é o range de cada tipo

    como no signed int é reservado o bit mais significativo para guardar o sinal do número, voce possui 31 bits para o número, dando um range de -2^31 até 2^31-1

    já para o unsigned int, voce tem o range absoluto maior variando de 0 até 2^32-1

    abraços, cox

    cox
    • Sugerido como Resposta Danimar Ribeiro terça-feira, 5 de janeiro de 2010 11:07
    • Marcado como Resposta Rafael Sousa terça-feira, 5 de janeiro de 2010 20:51
    terça-feira, 24 de novembro de 2009 02:54