Pergunta

Sou iniciante em C e usando o Turbo C ++ Compiler (16 bits).

No software que estou escrevendo, a resposta máxima é de cerca de 32000. Se eu quiser um número maior que isso, eu uso long int.

Se eu executar o seguinte programa:

#include <stdio.h>
void main()
{
    long int x;
    x=40000;
    printf("%d", x);
}

Então eu recebo um erro de que o valor constante está em função main().

Como posso obter uma resposta mais que 32000 e me livrar desse erro? NW também mudei %d para %ld e uso 40000L Bt quando uso o número inteiro não assinado, então também preciso usar 'L' com 40000 // ??

Foi útil?

Solução

Use %ld no printf para o longo Int. %d é para int, que possui apenas 16 bits no seu compilador. E para a mensagem de erro, use x = 40000L.

Outras dicas

Alterar por muito tempo para não assinado, o 40000 se encaixará no Int não assinado.

Supondo que você esteja no Windows, a melhor solução para isso é atingir uma plataforma de 32 ou 64 bits. Os programas de 16 bits nem serão executados em versões de 64 bits do Windows; você deve realmente atualizar.

A Microsoft tem uma versão gratuita do Visual Studio: Visual C ++ Express Edition. Esta é uma excelente opção também porque vem com um IDE completo.

O GCC também está disponível para Windows na forma de Mingw. Infelizmente, o próprio Mingw não libera compiladores prontos para uso, mas outros o fazem, como equação.com ou TDM.

Talvez eliminando formatação variádica Pode ajudar :) quando você (ou o subsistema printf ()) realmente começa a expandir Argumentos variádicos, assume que você sabe que tipo eles são.

Isso não apenas vale para o PrintF, mas qualquer outra função que empregue va _*() ou v*printf () ao discutir o Printf. Não perca o controle de seus tipos.

Além disso, acompanhe assinatura para evitar resultados inesperados.

Em outras palavras, quando você chama printf (), ou qualquer outra coisa aceitando um elipsis, tenha certeza do que você está passando. Isso não se limita ao printf (), de fato se aventurando além disso, geralmente não produz avisos do compilador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top