亲,能看下这两个吗?
看不清楚嘞
(1)pf[0]和a[0],这两个应该要用到内存中保存的二进制来解释了。
a[0]整型应该保存为:00000000 00000000 00000000 00001010
当解析为单浮点数时,那个数太小了,是0.000000几了,只能用0来表示了。应该是这样的
浮点数保存的字节格式如下:
地址 +0 +1 +2 +3
内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
这里
S 代表符号位,1是负,0是正
E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。
M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了
较高的有效位数,提高了精度。
参考:http://blog.csdn.net/djsl6071/article/details/1531336
(2)实在看不清
亲,这回看清了吗?
追答(1)%g:自动转换%f或者%e的,如果数字太小,比如小于1/10000时,可能就会写成1.0e-4之类的;或者是超过6位数还是7位数的时候。这个你自己可以度一下。
(2) 执行之前,就是执行pi[0]=17;和pi[1]=29;之前。执行之前,内存中数组保存的数据还是原来那样,就是图5.5(a)所示的。
(3)从何而来?你要先知道double需要多少字节,int需要多少字节保存数据。double用8个字节,int用4个。当你执行pi[0]=17;和pi[1]=29;之后,这两个都是int,占4位,写进内存的时候,都放在了double数组的前8位中,就是d[0]中,如(b)所示。看到的是以int的形式去看,当你以double去解析时,d[0]就是6.15379e-313
看不懂在问