bool类型默认值是多少
private bool a; ---- 默认是false
private void button1_Click(object sender, EventArgs e)
{
if (a == false) -----判断
{
MessageBox.Show("aa");
}
}
bool类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。 在objective-c中提供了相似的类型BOOL,它具有YES值和NO值;在java中则对应于boolean类型。
扩展资料
BOOL和bool的区别:
1、类型不同
bool为布尔型用作逻辑判断
BOOL在<windef.h>typedef int BOOL;
在<wtypes.h>typedef long BOOL;
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、取值不同
bool取值false和true,0为false,非0为true。(例如-1和2都是true)。
如果数个bool对象列在一起,可能会各占一个Byte,这取决于编译器。
BOOL是微软定义的typedef int BOOL(在windef.h中),0为FALSE,1为TRUE。
bool System.Boolean
4Byte 32bit布尔型变量 逻辑值,true或者false,默认值为false
c c++中
对于这个问题,我在VS2008上面做了一个实验。示例代码如下:
#include <iostream>
using namespace std;
int main()
{
bool temp;
cout << temp << endl;
getchar();
return 0;
}
在Debug环境下单步调试,执行第一行之后,监视变量temp,
temp初始默认值是true,地址是0x0013fe0f。查看该内存地址
从图中可以看出,地址0x0013fe0f开始的一个字节存放的值是0xcc。经过多次实验,发现各种基本类型的初始空间都是被初始化为0xcc的。所以一般在Debug环境下,程序申请的内存空间如果没有初始化的,会被编译器默认设置为0xcc的初始值。
但是继续单步执行第二行,弹出警告对话框。具体信息如下:
从对话框中可以看出,提示信息是变量temp没有初始化就使用了。然后点击继续,程序输出结果
显示的是204,也就是16进制的0xcc。说明temp初始值确实是0xcc,而且从上述过程中也可以看出,系统会提示没有被初始化。
在Release环境下单步调试,执行第一行之后,同样监视temp,
初始值也是true,地址是0x001ffa8c。查看内存地址,结果如下:
从图中可以看出,地址0x001ffa8c开始的第一个字节放的值是0xf0。经过多次试验,发现初始值是随机的,没有被统一规定。所以在Release环境下,变量内存的初始值是随机的。
继续单步执行第二行,没有弹出警告对话框。最后显示的结果如下:
从图中可以看出,显示的是240,也就是16进制的0xF0,与上述在内存地址中观察的一样。
综上可以看出,在Debug环境下,变量的内存地址空间被编译器默认用0xcc填充了。而在Release环境下,变量的内存地址空间被编译器用随机值填充了。
研究了这么多,其实还是要给出一条建议:在定义变量的同时,给出一个初始值,而不要让编译器默认填充。这样既方便调试,也不会因为Debug或者Release环境的不同而不同。默认填充会有许多的不确定性,不同的编译器也会不同,会引入许多隐含的Bug。