//first.c#include <stdio.h>void f(void);int x = 15213;int y = 15212;int main(){f();printf("x = ox%x y = 0x%x\n", x, y);return 0;}


//bar.cdouble x;void f(){x = -0.0;}

xxx@ubuntu-64bit-compile:~/share2/learning/csapp/project$ cc first.c bar4.c


/usr/bin/ld: Warning: alignment 4 of symbol `x' in /tmp/ccFBxcBU.o is smaller than 8 in /tmp/ccOvyDIy.o
xxx@ubuntu-64bit-compile:~/share2/learning/csapp/project$ ./a.out

x = ox0 y = 0x80000000

因为double 类型是8个字节, 而int 类型是4个字节。因此, 负值的双精度浮点表示覆盖存储中 x 和 y的位置。因此就会产生那样的打印结果。


为此, 在项目中, 得到了一条经验教训: 不要忽视 编译警告。。。。

这一点开发人员一直不注意。


更多相关文章

  1. android Uri获取真实路径转换成File的方法
  2. android sqlite 图片保存和读出
  3. Android(安卓)识别SIM卡类型
  4. 监听TextView的变动
  5. android 判断联网类型
  6. Android电池信息(Battery information)
  7. 安卓4.X系统 增加蓝牙接收文件类型
  8. JS判断终端类型的几种方法
  9. Android(安卓)DEX安全攻防战

随机推荐

  1. Android(安卓)Studio | 一个优雅的安卓开
  2. Android应用框架之数据库框架Room简介
  3. Android(安卓)手机玩转技巧
  4. Android独立交叉编译环境搭建
  5. Android(安卓)CTS Verifier Sensor Test
  6. 浅谈一下关于android碎片化的问题
  7. Android开发——09Google I/O之让Android
  8. .Net 转战 Android(安卓)4.4 日常笔记(9)--
  9. 图解 Android(安卓)事件分发机制 和 hand
  10. android中的内存优化