Выбор типа для буквенных числовых значений в C

Мне интересно об этом: когда я пытаюсь присвоить целочисленное значениеint переменная (16-битный компилятор, 2 байта для целых чисел) скажем:

int a;

a=40000;

это не может быть представлено диапазоном типа, который будет обрезан. Но я вижу, что полученное значение вa является битовой комбинацией для -25000 (или некоторого близкого числа), что означает, что двоичное представление, которое компилятор выбирает для десятичного 40000, было целочисленным представлением без знака. И это поднимает мой вопрос: как компилятор выбирает тип для этого литерального выражения?

Я предполагаю, что он использует тип, способный обрабатывать значение с меньшим объемом требуемой памяти.

Ответы на вопрос(3)

Ваш ответ на вопрос