金牌会员
- 积分
- 1467
- 威望
- 701
- 贡献
- 410
- 兑换币
- 428
- 注册时间
- 2014-1-6
- 在线时间
- 178 小时
|
- Temporary breakpoint 3, main () at test.c:4
- 4 unsigned char dat[5]={2,4,3,5,6};
- (gdb) n
- 8 x=dat[0]*10000+dat[1]*1000+dat[2]*100+dat[3]*10+dat[4];
- (gdb) n
- 9 d=x/1000;
- (gdb) p x
- $5 = 24356
- (gdb) n
- 10 printf("%f\n",d);
- (gdb) p x
- $6 = 24356
- (gdb) n
- 24.000000
- 12 d=dat[0]*10+dat[1]+dat[2]*0.1+dat[3]*0.01+dat[4]*0.001;
- (gdb)
- 13 printf("%f\n",d);
- (gdb)
- 24.356000
- 14 }
- (gdb)
复制代码 可以看到d=x/1000;这一步之后,d的值实际是24,这句话是这样执行的,先x/1000得到的是24,因为x为int型,然后将所得值赋值给d,而d是double型,要进行类型转换,就得到了24.0这样的结果
PS:如果有错望指正 |
|