float a,b;b = 0.9;a = sqrt(b);
float a,b;
b = 0.9;
a = sqrt(b);
上述代码会直接崩溃
但是使用 a=sqrt(0.9)就不会,请问是什么原因啊
a=sqrt(0.9)
查看更多
输入是常数时,有可能编译器直接在预编译时帮你算了,并没有真正执行sqrt,可以反汇编确认下。
崩溃的原因建议查一下,是不支持浮点,还是非对齐或是栈溢出。
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
你好,多谢回复,如下时我的编译选项
像如下代码也会崩溃
a[10] = (double)exp(*(double *)&foo);
foo是一个整数,但是如果foo直接给double就可以
建议反汇编来仔细分析,重点检查几点
@aozima
刚接触RTT,请问如何查看backtrace,如何查看芯片的FPU