В приведенном ниже коде,значение с плавающей точкой отливают на символ
#include<stdio.h>
int main(){
char array[] = {'1', 2, 5.2};
char* my_pointer = array[2];
printf("%c", *my_pointer);
}
5.2
хранится в IEEE 754 представления в памяти, char
выбирает 8 битов (первый) из этого поплавка представления, из-за маленького формата Endian.
C - свободно типизированный язык. Am разрешено отливать float
в char
.
Почему программа сбрасывается?
Какой вопрос? – meJustAndrew
Выполняйте действия, которые являются неопределенным поведением, ожидайте, что произойдет неопределенное поведение. –
@DavidHoelzer Я знаю, как '5.2' хранится в памяти, я собираю 8 бит из него. Разве это не определено? C - свободно набранный язык. Мне разрешено использовать 'float' для' char'. Зачем нужно исполняемое ядро? – overexchange