bool变量如果不初始化....

时间:2022-01-25 22:01:16
某类里有一个bool变量

如果 我不在构造函数中初始化他 直接拿来用

那么 他的默认值是true 还是 false ?

经过 测试 是true.

主要问下 是在不管什么编译环境下 默认都为true 还是说这个默认值是不确定的?

21 个解决方案

#1


不确定的,如果静态变量那默认就是false了

#2


不确定的。。最好在构造函数中或者使用之前初始化下。。

#3


要看它是放在哪个段里面的了,要是放在bss段肯定是false,要是在ss里面就是未定了

#4


引用 1 楼 kelleniiii 的回复:
不确定的,如果静态变量那默认就是false了


不是静态变量呢

就是普通的一个类成员变量bool m_bValue;

也是不确定的么?

#5


不仅是指针变量在使用前要初始化,任何变量都应该在使用前初始化。

#6


引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool

#7


不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0

所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。

你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。

#8


引用 6 楼 wangsiyuanoo 的回复:
引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool


不在构造函数中初始化没关系呀。。
只要在使用之前初始化就可以了。。

#9


该回复于2011-03-30 15:14:11被版主删除

#10


引用 8 楼 hbxstone99 的回复:
引用 6 楼 wangsiyuanoo 的回复:
引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool


不在构造函数中初始化没关系呀……


但程序一开始就要判断
if ( m_bValue )
{
  ....
}
这个判断是放在一个循环里的
这个时候还没有任何赋值!
我就直接拿来用了。。。

#11


bool m_bValue = true
那你就初始化一下呗!~~~

#12


不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。

#13


变量不初始化这个问题一般出问题后最费时间找,找到后还会被气死,所以如楼上几位说的,任何变量都要初始化.

#14


引用 12 楼 taodm 的回复:
不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。

+1

#15


如果你的对象是在栈上建立的,纯看运气。
全局变量应该是false。

#16


引用楼主 wangsiyuanoo 的回复:
某类里有一个bool变量

如果 我不在构造函数中初始化他 直接拿来用

那么 他的默认值是true 还是 false ?

经过 测试 是true.

主要问下 是在不管什么编译环境下 默认都为true 还是说这个默认值是不确定的?


编程习惯:不适用未初始化的变量!

#17


不确定,如果是静态就是false,因为内存块会被置0

#18




c/c++ 里面,

声明变量都建议 强制初始化

#19




 大多是程序逻辑问题

#20


bool变量如果不初始化....
引用 7 楼 opqit 的回复:
不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0

所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。

你做这样一个测试,有个类,有10个bool变量,都不初始化。
你……


详细、精确

#21


该回复于2012-12-08 09:27:07被管理员删除

#1


不确定的,如果静态变量那默认就是false了

#2


不确定的。。最好在构造函数中或者使用之前初始化下。。

#3


要看它是放在哪个段里面的了,要是放在bss段肯定是false,要是在ss里面就是未定了

#4


引用 1 楼 kelleniiii 的回复:
不确定的,如果静态变量那默认就是false了


不是静态变量呢

就是普通的一个类成员变量bool m_bValue;

也是不确定的么?

#5


不仅是指针变量在使用前要初始化,任何变量都应该在使用前初始化。

#6


引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool

#7


不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0

所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。

你做这样一个测试,有个类,有10个bool变量,都不初始化。
你用一个函数,把其中的5个修改一下值。用另一个函数打印值。
而后你new 这个类,修改,打印,delete这个类。而后循环做这个动作,看看默认值是不是变了。

#8


引用 6 楼 wangsiyuanoo 的回复:
引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool


不在构造函数中初始化没关系呀。。
只要在使用之前初始化就可以了。。

#9


该回复于2011-03-30 15:14:11被版主删除

#10


引用 8 楼 hbxstone99 的回复:
引用 6 楼 wangsiyuanoo 的回复:
引用 2 楼 hbxstone99 的回复:
不确定的。。最好在构造函数中或者使用之前初始化下。。


现在我遇到一个问题 就是一个bool变量 作为开启某个功能的开关
但有另外一个操作 会经过这个类的构造函数 从而将这个bool重新赋值为开始初始化的值 这是我不想的
所以 就想不初始化bool


不在构造函数中初始化没关系呀……


但程序一开始就要判断
if ( m_bValue )
{
  ....
}
这个判断是放在一个循环里的
这个时候还没有任何赋值!
我就直接拿来用了。。。

#11


bool m_bValue = true
那你就初始化一下呗!~~~

#12


不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。

#13


变量不初始化这个问题一般出问题后最费时间找,找到后还会被气死,所以如楼上几位说的,任何变量都要初始化.

#14


引用 12 楼 taodm 的回复:
不要空耗精力讨论错误的代码为啥有时候运行起来还是正确的。

+1

#15


如果你的对象是在栈上建立的,纯看运气。
全局变量应该是false。

#16


引用楼主 wangsiyuanoo 的回复:
某类里有一个bool变量

如果 我不在构造函数中初始化他 直接拿来用

那么 他的默认值是true 还是 false ?

经过 测试 是true.

主要问下 是在不管什么编译环境下 默认都为true 还是说这个默认值是不确定的?


编程习惯:不适用未初始化的变量!

#17


不确定,如果是静态就是false,因为内存块会被置0

#18




c/c++ 里面,

声明变量都建议 强制初始化

#19




 大多是程序逻辑问题

#20


bool变量如果不初始化....
引用 7 楼 opqit 的回复:
不确定。
这涉及到系统内存分配的实现问题,一般从free到commit内存,系统默认值都是0。所以你测试看到的,都是0

所有变量,都需要初始化。不初始化,那值就是随机的。
因为一个类在创建出来的时候,系统只是把一段空闲的内存给它了,而没有对这段内存做初始化操作,这样你对应的变量是什么值,就依赖这块内存里原来的内容。

你做这样一个测试,有个类,有10个bool变量,都不初始化。
你……


详细、精确

#21


该回复于2012-12-08 09:27:07被管理员删除