C 将int强制转换为float将导致非法指令
我使用的是运行Linux的MINI2440板(S3C2440 CPU) 我有以下工作:C 将int强制转换为float将导致非法指令,c,floating-point,embedded-linux,C,Floating Point,Embedded Linux,我使用的是运行Linux的MINI2440板(S3C2440 CPU) 我有以下工作: double a=168.168; printf("\nsqrt(%f)=%f\n", a, sqrt(a)); 但我认为这会导致“非法指令”: 我不能将整数转换为浮点 我试图添加/删除-msoft_float以及-D_ugcc_float_NOT_所需的选项,但它没有改变任何东西 有什么想法吗?成功了 我没有指定-march=armv4t和-mtune=arm920t选项 现在可以很好地工作了,谢谢。试试
double a=168.168;
printf("\nsqrt(%f)=%f\n", a, sqrt(a));
但我认为这会导致“非法指令”:
我不能将整数转换为浮点
我试图添加/删除-msoft_float以及-D_ugcc_float_NOT_所需的选项,但它没有改变任何东西
有什么想法吗?成功了
我没有指定-march=armv4t和-mtune=arm920t选项
现在可以很好地工作了,谢谢。试试
a=b代码>并依赖编译器做正确的事情(C中的许多/一些/一些强制转换完全是错误的)。可能是代码生成错误。为了以防万一,您可以发布通过编译代码片段获得的程序集吗?这是一个编译错误还是一个运行错误?我认为您使用了错误的编译器,它将您的代码编译到您无法识别的asm。请使用-fno builtin
或double a=168.8+printf(“”)尝试您的第一个sqrt
示例代码>;我想它也会失败。
float a = 0.0;
int b = 1;
a = (float)b;