«Тип» в C и C ++ - это свойство, назначаемое переменным, когда они обрабатываются в компиляторе. Это свойство больше не существует во время выполнения, за исключением виртуальных функций / RTTI в C ++.
Компилятор использует тип переменных для определения многих вещей. Например, при присваивании числа с плавающей точкой int, он будет знать, что ему нужно преобразовать. Оба типа, вероятно, 32-битные, но имеют разные значения. Вероятно, у процессора есть инструкция, но в противном случае компилятор узнает, что нужно вызвать функцию преобразования. То есть
& __stack[4] = float_to_int_bits(& __stack[0])
Преобразование из char * в unsigned char * даже простое. Это просто другой лейбл. На уровне битов p и вверх идентичны. Компилятору просто нужно помнить, что * p требует расширения знака, а * up - нет.