codercss 14 Denunciar post Postado Junho 30, 2016 Olá a todos, Neste programa não deveria receber um erro, uma vez que estou a inicializar a variável valor com um número negativo? #include <stdio.h> int main(void) { unsigned int valor = -9; printf("O resultado de valor é %d", valor); } Ele imprime -9, porque? Nota: Estou a utilizar o codeblocks, mas já fiz via gcc, no terminal, e o resultado é o mesmo! Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 30, 2016 http://www.cplusplus.com/reference/cstdio/printf/ Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Julho 1, 2016 Sinto-me um pouco perdido, mas fiz algumas pesquisas e achei este especificador (não sei se é assim que se diz), %u. Neste código os resultado são bem diferentes: #include <stdio.h> int main(void){ unsigned int valor = -9; printf("%d\n, valor); // -9 printf("%u", valor); //4294967287 } Continua a não perceber a aplicação do parametro unsigner (não sei se é uma propriedade). A não ser que a função printf intreperte este parametro de maneira diferente, é isso? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Julho 1, 2016 http://en.cppreference.com/w/c/types/limitshttp://stackoverflow.com/questions/3812022/what-is-a-difference-between-unsigned-int-and-signed-int-in-c Compartilhar este post Link para o post Compartilhar em outros sites
codercss 14 Denunciar post Postado Julho 2, 2016 Já percebi que ao colocar o atributo unsigned estou a converter o alcance negativo para positivo, fazendo com que vá de 0 até 65535! Mas uma vez que elimino o alcance negativo porque que o compilador deixa que sejam inicializados valores negativos? Compartilhar este post Link para o post Compartilhar em outros sites