Domanda

Sono un principiante in C, e l'utilizzo di Turbo C ++ compiler (16 bit).

Nel software che sto scrivendo, la risposta massima è di circa 32000. Se voglio un numero più grande di quello, io uso long int.

Se eseguo il seguente programma:

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

Poi ricevo un errore che il valore della costante è lungo nella funzione main().

Come posso ottenere una risposta più che 32000 e di sbarazzarsi di questo errore? anche Nw a cambiare% d a% ld e utilizzare 40000L bt quando uso intero senza segno quindi anche devo usare 'l' con 40000 // ??

È stato utile?

Soluzione

Utilizzare% ld nel printf per il long int. % D è per int che ha solo 16 bit nel vostro compilatore. E per il messaggio di errore, utilizzare x = 40000L.

Altri suggerimenti

cambiamento a lungo per non firmato, 40000 si adatta a unsigned int.

Supponendo che siete su Windows, la soluzione migliore per questo è quello di colpire una piattaforma a 32 o 64 bit. programmi a 16 bit non sarà nemmeno funzionare su versioni a 64 bit di Windows; si dovrebbe davvero l'aggiornamento.

Microsoft ha una versione gratuita di Visual Studio: Visual C ++ Express Edition . Questa è una scelta eccellente anche perché si tratta di un IDE completo.

Gcc è disponibile per Windows sotto forma di Mingw anche. Purtroppo, si è MinGW non rilascia i compilatori pronti per l'uso, ma altri lo fanno, come ad esempio equation.com o TDM .

Forse spazzolatura su variadic formattazione potrebbe aiutare :) Con il tempo di (o la printf () sottosistema) diventa in realtà ad ampliare argomenti variadic , il suo assunto che si sa che tipo essi sono.

Questo vale non solo per la printf, ma qualsiasi altra funzione che impiega va _ * () o v * printf () quando si parla di printf. Non perdere la traccia dei vostri tipi.

Inoltre, tenere traccia di signedness per evitare risultati imprevisti.

In altre parole, per il momento si chiama printf (), o qualsiasi altra cosa che accetta un elipsis , essere sicuri di ciò che si sta passando. Questo non è limitato a printf (), infatti avventurarsi al di là che spesso non producono gli avvisi del compilatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top