Od odpowiedzi dostałam od this question, wydaje się, że C++ odziedziczyła ten wymóg przeliczenia short
do int
podczas wykonywania operacji arytmetycznych z C. Mogę odebrać swoje mózgi, aby dlaczego ten został wprowadzony w C w pierwszym miejsce? Dlaczego po prostu nie wykonywać tych operacji jako short
?Dlaczego krótki musi być konwertowany na int przed operacjami arytmetycznymi w C i C++?
Na przykład (pobranej z sugestią DYP w komentarzach):
short s = 1, t = 2 ;
auto x = s + t ;
x
będzie miał rodzaj int.
@Jefffrey Integralna promocja jest częścią zwykłych konwersji arytmetycznych. 'krótki s = 1, t = 2; auto x = s + t; 'then' x' to 'int'. – dyp
możliwy duplikat [Co to jest "Naturalny rozmiar" w języku C++?] (Http://stackoverflow.com/questions/24370732/what-does-natural-size-really-mean-in-c) –
IMO: There było bardzo mało do zdobycia przez zobowiązanie zgodnego kompilatora do wykonywania matematyki całkowitej jako krótkiej (lub jako znaku). Bez żądania, dlaczego tego wymagać? – chux