Предположим, что у меня есть следующий код СУказатели и тип литья в C
#include<stdio.h>
int main()
{
float a=3.14;
char j= a;
printf("%d\n", j);
return 0;
}
OUTPUT: 3 (как и ожидалось)
Теперь предположим, что я делаю то же самое, используя указатели.
#include<stdio.h>
int main()
{
float a=3.14;
char *j= (char*)&a;
printf("%d\n", *j);
return 0;
}
ВЫВОД: -61
Теперь, почему я получаю -61 вместо
EDIT Из ответов до сих пор, я понял, что с полукокса (обычно) длиной 1 байт, поэтому указатель char выбирает только первый байт и дает -61 вместо печати полный поплавок.
Но вот, как компилятор определяет размер типа данных, чтобы он знал, где он должен прекратить печать. Будет ли он определяться типом указателя, каким он кажется в результате ответов до сих пор?
Но в идеале, во время лексической фазы компиляции создается таблица символов и тип данных также понимается в то время.
Вопрос Итак, если я говорю компилятора с помощью указателя обугленного, «Эй Бадди !! Просто распечатайте данные (типа), которые вы найдете в месте, указанном указателем полукокса заданного мною.». Это должен затем напечатать полный float, как компилятор знает теперь, что его float.?
Редактирование только что сделал это Боюсь, вопрос еще более запутанный. – Lundin