当前位置: 代码迷 >> 汇编语言 >> 白痴有关问题求大神点拨。db ? 和db 0有什么区别
  详细解决方案

白痴有关问题求大神点拨。db ? 和db 0有什么区别

热度:9242   发布时间:2013-02-26 00:00:00.0
白痴问题求大神点拨。。db ? 和db 0有什么区别?
如果db ?在内存单元存入的是00h,那么和db 0有什么区别?

------解决方案--------------------------------------------------------
探讨
引用:
跟编译器有关的。
你用的编译器编译后存储的是0
换到别的系统,别的编译器就不一定是0了。
比如VS2008 为初始化的变量的值是 0xcccccccc


我用的编译器编译后存储是0

那么,如果所有用到db ?的地方都用db 0代替,会出现什么问题?

------解决方案--------------------------------------------------------
不同的编译器处理不完全相同
写程序时最好采用谨慎原则,就是说不要依赖一些隐含的,编译器相关的特性
比如db ?
你如果认为它的初始值就是0,那就错了
也许某编译器或者某操作系统下这样做确实可以,但是,你不应该依赖这个
把db ?全部写成db 0
从处理结果上来说没有问题,然而,如果是不必要初始化的数据区,就多了初始化的工作,
从效率上来说是有损失的。另外,db ?和db 0有可能会严重影响编译后的代码的大小,
db 0的话有可能会放入数据区,也就是说可执行文件会因此变大,而db ?应该就不会有这个问题,
当然,这个细节也是具体环境相关的。
其实这种问题不要想太多,水到渠成的理解是最好的。
db 0和db ?这两个你就记住:如果需要初始值为0就用db 0,否则就用db ?