Ho una domanda piuttosto semplice, ma non sono sicuro di aver compreso il concetto o meno. Supponiamo di avere:Moltiplicazione di due interi in C++
int a = 1000000;
int b = 1000000;
long long c = a * b;
Quando eseguo questo, c mostra il valore negativo, così ho cambiato anche A e B per lungo tempo e poi tutto è andato bene. Quindi, perché devo cambiare a e b, quando i loro valori sono nell'intervallo di int e il loro prodotto è assegnato a c (che è molto lungo)?
sto usando C/C++
i int non sono promossi a lungo molto prima della moltiplicazione, loro restano intatti e anche il prodotto. Quindi il prodotto è lanciato a lungo, ma troppo tardi, il trabocco ha colpito. Avere uno o l'altro lungo dovrebbe funzionare come l'altro sarebbe promosso. –
Dovresti taggare la lingua di programmazione che stai utilizzando perché lingue diverse potrebbero introdurre un comportamento diverso;) – alfasin
A seconda della macchina e della versione di C che stai utilizzando, la dimensione di un 'int' potrebbe cambiare. – Jay