int类型未赋初值,什么情况下默认值为0,什么情况下默认值为随机数?

brk1985 2011-07-05 04:42:01
比如int human_num;这样的语句。。。RT疑惑。。。
...全文
9731 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
brk1985 2011-07-06
  • 打赏
  • 举报
回复
结贴。。。。。。
机智的呆呆 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 baihacker 的回复:]
引用 17 楼 demon__hunter 的回复:
引用 10 楼 baihacker 的回复:
C/C++ code

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << en……
[/Quote]
多谢赐教。
天外来客-007 2011-07-05
  • 打赏
  • 举报
回复
全局变量和static都是在静态存储区,默认会赋值为零的,但是局部变量就不一定了,依赖于编译器,所以,要养成好的编程喜欢,定义变量后记着初始化,不能把这个任务交由编译器来完成!
baihacker 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 demon__hunter 的回复:]
引用 10 楼 baihacker 的回复:
C/C++ code

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << endl << b->orz << endl;
delet……
[/Quote]
参考ISO/IEC 14882:2003(E)中的8.5.5以及5.3.4.15
机智的呆呆 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 baihacker 的回复:]
C/C++ code

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << endl << b->orz << endl;
delete a;……
[/Quote]
求解释。。。。。ORZ
hackbuteer1 2011-07-05
  • 打赏
  • 举报
回复
全局变量默认的就是0,局部变量是在栈上临时申请的,是一个随机值。。。
辰岡墨竹 2011-07-05
  • 打赏
  • 举报
回复
嗯除了C语言自身的规定外,在有些系统上,比如Solaris,新分配的内存页会自动被清0,但是你最好好是自己用赋初值、memset、ZeroMemory之类的清零。
pathuang68 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 louistao 的回复:]

引用 10 楼 baihacker 的回复:

C/C++ code

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << endl << b->orz << endl;
de……
[/Quote]

哈哈。想起了那句名言:
The King who is fucking is the son of the King who has fucked.
Louistao 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 baihacker 的回复:]

C/C++ code

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << endl << b->orz << endl;
delete a;
delet……
[/Quote]
这不叫生僻的,这叫淫荡的...
tbwork 2011-07-05
  • 打赏
  • 举报
回复
楼上说的对。纠结这个问题不必要。
养成习惯是最好的。
你说的这个问题是没有正解的,这要看特定的编译器。
Ace丶双鱼 2011-07-05
  • 打赏
  • 举报
回复
建议不管什么样的变量,不管编译器会不会帮你初始化。
都要自己初始化。!
baihacker 2011-07-05
  • 打赏
  • 举报
回复

//我发一个可能比较生僻的
struct fucker
{
int orz;
};
int main()
{
fucker* a = new fucker;
fucker* b = new fucker();
cerr << a->orz << endl << b->orz << endl;
delete a;
delete b;
return 0;
}
pathuang68 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brk1985 的回复:]

引用 1 楼 bdmh 的回复:

全局变量,会由系统进行初始化,局部,需要你自己初始化


int类型的全局变量未赋值,系统初始化为0;局部变量未赋值,则为随机值,是这个意思吧?
[/Quote]

是这个意思。
GoForSky 2011-07-05
  • 打赏
  • 举报
回复
全局变量 和 static 变量。
局部变量时随机
就想叫yoko 2011-07-05
  • 打赏
  • 举报
回复
全局变量 和 static变量
至善者善之敌 2011-07-05
  • 打赏
  • 举报
回复
恩,静态情况下也是0
luciferisnotsatan 2011-07-05
  • 打赏
  • 举报
回复
全局变量默认初始化为0
zml18946007194 2011-07-05
  • 打赏
  • 举报
回复
static int 初始化为0
QQIANQQ 2011-07-05
  • 打赏
  • 举报
回复
int 全局一般会初始化为0,局部变量未定义。楼主可以上机尝试一下!
brk1985 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

全局变量,会由系统进行初始化,局部,需要你自己初始化
[/Quote]

int类型的全局变量未赋值,系统初始化为0;局部变量未赋值,则为随机值,是这个意思吧?
加载更多回复(1)
1.方法中的内部类能不能访问方法中的局部变量,为什么? 2.分析运行结果,说明原理。(没有分析结果不得分) import java.util.ArrayList; class Data { int val; } public class Test { public static void main(String args[]) { Data data = new Data(); ArrayList list = new ArrayList(); for (int i = 100; i < 103; i++) { data.val = i; list.add(data); } for (Data d : list) { System.out.println(d.val); } } } 3.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 4.编写一个类,在main方法中定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 5.定义一个文件输入流,调用read(byte[] b)方法将exercise.txt * 文件中的所有内容打印出来(byte数组的大小限制为5)。 6.存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型默认值为字符串 www.itheima.com int/Integer类型默认值为100 boolean/Boolean类型默认值为true double/Double的默认值为0.01D. 只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现 7.有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常, * 在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。 * 在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息。 * 完成这个例子,请说出java中针对异常的处理机制。 8.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, * 然后打印出这个十进制整数对应的二进制形式。 * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况, * 并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。 * 提示:十进制数转二进制数的方式是用这个数除以2, * 余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2, * 这次得到的余数就是次低位,如此循环,直到被除数为0为止。 * 其实,只要明白了打印出一个十进制数的每一位的方式 * (不断除以10,得到的余数就分别是个位,十位,百位), * 就很容易理解十进制数转二进制数的这种方式。 10.有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。 * 问:最后剩下的是100人中的第几个人?

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧