Что такое тип в C/С++? Как компилятор проверяет, нужен ли явный тип (и действителен)? Сопоставляет ли это пространство, необходимое для значения? Если у меня есть, например:
int a;
double b = 15.0;
a = (int) b;
Если я правильно помню, для двойного значения требуется больше места (было ли это 8 байтов?!), чем целое число (4 байта). И внутреннее представление обоих совершенно разных (дополнение к двум/мантисса). Так что же происходит внутри? Пример здесь довольно прост, но в C/С++ существуют многочисленные приемы.
Как компилятор знает (или программиста), если я могу наложить, например. FOO to BAR?