Mam następujący przykład skompilowany w VS2005, ostrzegając Poziom 4:Dlaczego wartość * = różni się od utraty danych podczas konwersji?
int main(int argc, char *argv[])
{
short s = 2;
short t = 3;
t *= s; // warning C4244: '*=' : conversion from 'int' to 'short', possible loss of data
t = t * s;
}
Nie wydaje mi się, że powinno być przestrogą na każdej linii.
Czy * = utworzyć niejawną konwersję na int z jakiegoś powodu?
EDIT:
Wygląda na brak ostrzeżenia w drugiej linii (oraz w VS2008) są prawdziwe pytań.
Dzięki za odpowiedzi.
Nie stanie się to w 2008 roku. –
Używanie VC2008 zbudowanego za pomocą (/ W4) -> Nie otrzymuję ostrzeżenia! – AraK
Nie otrzymałem ostrzeżenia w VS2005. Być może możesz opublikować swoje opcje kompilatora? –