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

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


#include <stdio.h>

int main(){
int x; //-858993460
printf("%d",x); //弹出Debug Error对话框

    //x=func1();

getchar();
return 0;
}

int func1(){
//如果被调用,返回 -858993460
}

在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

时间: 2024-10-03 22:37:44

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

定义变量时未初始化赋值的问题

变量定义时未初始化,导致生命周期结束后,重新定义变量时,仍然保存有之前的数据,或者数据为内存中的随机值. 如下代码: #include <iostream> using namespace std; typedef struct s_xy { int x; int y; } s_xy; int main() { // your code goes here for(int i = 0; i < 3; ++i) { s_xy point; volatile int num; if(1 ==

JAVA变量初始化赋值null

 在Java中,null值表示引用不指向任何对象.运行过程中系统发现使用了这样一个引用时·可以立即停止进一步的访问,不会给系统带来任何危险. 1.如果是对象的field的话那么系统在初始化对象的时候会把那些对象的值赋值为null,基本数据类型也有它们的初始值 2.如果是在方法内,那么程序员需要自己给这些变量赋值. class T{   Object obj = null;   Object obj1;//系统在初始化的时候会自动的给他赋值为null } class T{   public voi

Oracle:ORA-24324: 未初始化服务句柄 ORA-01090: 正在关闭 - 不允许连接

1.sqlplus/nolog 2.SQL> conn / as sysdba已连接到空闲例程.3.SQL> shutdown abortORACLE 例程已经关闭.4.SQL> startupORACLE 例程已经启动. Total System Global Area  591396864 bytesFixed Size                  1250308 bytesVariable Size             226495484 bytesDatabase Bu

Exchange2010 OutLook Web App未初始化

故障现象 安装好Exchange 2010后,登录OWA出现提示"Outlook Web App 未初始化.如果问题仍然存在,请与技术支持人员联系.The Microsoft Exchange Active Directory Topology service on serverlocalhost did not return any suitable domain controllers."的错误. 故障原因 出现此故障是因为Exchange服务器上IIS未启用相关身份验证方式的原因

java 小程序查看器 启动:未初始化小程序 解决方法

欢迎大家转载.为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也能够下载.假设你没有积分.能够联系我索要! 在执行java程序的时候突然出现启动:未初始化小程序,  百度了一大堆资料都没有解决方式.但程序还是要用啊.依照又一次建立project的步骤又一次来吧.总之肯定是某个地方出现了错误! 依据多次尝试最终找到了解决方法.不知道你们的和我的是不是相同的原因引起的.方法例如以下: 1.右击project----属性,如图: 2.依

DSP开发中遇到的问题 - 类指针未初始化后果

收到RECEIVE_REQ_MSG消息时会执行下面的代码,这里因为某种原因m_receiverSlaverController的值仍为NULL,并没有指向具体的CReceiverSlaverController类.执行到ReceiveHandler函数时,在ReceiveHandler函数中,会通过CReceiverSlaverController类的成员变量m_measurementAgent(类型为Agent类)调用Agent类的成员函数handleMessage,然后在ReceiveHan

bool? 什么意思 bool? isTrue;表示 bool isTrue = null ; 定义并给变量赋值为null;

bool?  什么意思   bool?  isTrue:表示 bool isTrue = null :  定义并给变量赋值为null: 解释见查看MSDN: https://msdn.microsoft.com/zh-cn/library/bb384091(v=VS.90).aspx 如何:从 bool? 安全地强制转换为 bool(C# 编程指南) Visual Studio 2008 其他版本 更新:2007 年 11 月 bool? 可以为 null 的类型可以包含三个不同的值:true.

初始化赋值时a = b = 常数 的易犯错误

1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int a,b; a=b=2; //成功 6 //int a = b = 2;失败 7 printf("%d %d",a,b); 8 system("pause"); 9 return 0; 10 } 新手注意直接初始化变量的 int a = b = 2这样的写法会导致编译失败. 如何能让这个语句正确呢,那就在前面声明好

C++中指针未初始化的问题

源代码: IntList::IntList(int numVals , int val ) { if (numVals>0){ numberValues=numVals; values=new int[numVals]; for(int i=0;i<numVals;++i){ values[i]=val; } } else numberValues=0; } IntList::IntList(const IntList &il) { numberValues=il.size(); if