Выбор типа для буквенных числовых значений в C
Мне интересно об этом: когда я пытаюсь присвоить целочисленное значениеint
переменная (16-битный компилятор, 2 байта для целых чисел) скажем:
int a;
a=40000;
это не может быть представлено диапазоном типа, который будет обрезан. Но я вижу, что полученное значение вa является битовой комбинацией для -25000 (или некоторого близкого числа), что означает, что двоичное представление, которое компилятор выбирает для десятичного 40000, было целочисленным представлением без знака. И это поднимает мой вопрос: как компилятор выбирает тип для этого литерального выражения?
Я предполагаю, что он использует тип, способный обрабатывать значение с меньшим объемом требуемой памяти.