在下面的代码,浮动值浇铸到char
#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个比特(第一个)从该浮点表示,由于小端格式。
C是一种松散类型的语言。我被允许投下float
到char
。
为什么该程序是核心转储?
这是个问题? – meJustAndrew
做一些未定义的行为,期待未定义的行为发生。 –
@DavidHoelzer我知道,如何在内存中存储'5.2',我从中选择了8位。那是不确定的? C是松散类型的语言。我被允许将'float'强制转换为'char'。为什么应该可执行的核心? – overexchange