程序员都知道,也都会使用printf函数,但你知道它也有“安全隐患”吗?
下面就来举例我说说:
问题描述
打印输出的数据并不是理论值,如下图(右边):
进一步描述问题
int a=5;
floatx=a; //这里转换是没有问题的。%f打印x是 5.000000
printf("%d\n",a);
printf("%f\n",a); //输出为什么是0.000000?-----问题1
printf("%f\n",x);
printf("%d\n",x); //输出为什么是0?-----问题2
printf("%f,%f\n",a,x); //输出都是0.000000 为什么? ----问题3
printf("%f,%f\n",x,a); //调换一下a,x的顺序,正常了,为什么?----问题4
printf("%d,%f\n",a,x);
getchar();
return0;
printf函数的原理解释
char string[]="Hello World!";
printf("String: %s ,强行再读一次: %#p\n", string);
printf("String: %s ,强行再读一次: %#s\n", string);
String:Hello World! , 强行再读一次: 0X001C1073
String: Hello World! ,强行再读一次:
问题解释
声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
------------ END ------------
●专栏《嵌入式工具》
●专栏《嵌入式开发》
●专栏《Keil教程》
●嵌入式专栏精选教程
关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。