码迷,mamicode.com
首页 > 其他好文 > 详细

[整理]定义但未初始化赋值的局部变量与OXCCCCCCCC

时间:2014-06-08 06:26:59      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

开发环境 : win7 32bit ,VS2010,先看一段C代码:

bubuko.com,布布扣
#include <stdio.h>

int main(){
    int x; //-858993460
    printf("%d",x); //弹出Debug Error对话框
    //x=func1();
getchar(); return 0; } int func1(){ //如果被调用,返回 -858993460 }
bubuko.com,布布扣

在Debug模式下,x在定义的同时被默认初始化赋值为-858993460,什么情况?

 

原来,Debug模式下,会把堆栈上的数据对初始化成了0xcc,也就是说局部变量如果不初始化,那么DEBUG版本中就会是0xCC。

  unsigned,unsigned long:3435973836 (OXCCCCCCCC)(11001100110011001100110011001100)

  int:-858993460(十六进制OXCCCCCCCC)(二进制11001100110011001100110011001100)

  short: -13108 (0XCCCC)(1100110011001100)

  char: -52 (0XCC)(11001100)

  double,long double: -9.2559631349317831e+061

  bool:true

 

Release模式下不会有这种附加动作,原来那块内存里是什么就是什么。所以要养成好的习惯,在声明变量的同时显式的初始化赋值,如"int x=0;"。

 

更多参考:

http://www.cnblogs.com/ustc11wj/archive/2012/08/12/2637313.html

http://www.360doc.com/content/13/0105/17/6295074_258392439.shtml

http://wenku.baidu.com/view/8bff6ea1b0717fd5360cdc07.html

[整理]定义但未初始化赋值的局部变量与OXCCCCCCCC,布布扣,bubuko.com

[整理]定义但未初始化赋值的局部变量与OXCCCCCCCC

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/Benoly/p/3774372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!