A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© net七期王雷 中级黑马   /  2013-5-10 22:09  /  20341 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 net七期王雷 于 2013-5-15 20:33 编辑

bool可以转换成int么?为什么两种值类型的不能相互转。

19 个回复

倒序浏览
本帖最后由 郝文鹏 于 2013-5-10 22:19 编辑

不可以,
bool 类型是类型只有 true 和 false 两个值.
而int 类型是数值类型 ,
bool类型是用来判断表达真假的.  如  boolean f= 1==2;  返回就是false值     但是 boolean  b= 1;就不行  
而int类型往往是用于参与运算,统计,比较.当然就不能就不能进行互换啦.   
希望可以帮助你.
回复 使用道具 举报
郝文鹏 发表于 2013-5-10 22:16
不可以,
bool 类型是类型只有 true 和 false 两个值.
而int 类型是数值类型 ,bool类型是用来判断表达真假的 ...

两都不都是值类型么?
回复 使用道具 举报
你可以用int i = 1代表true,int  i = 0 代表false;干嘛相互转化呢?
回复 使用道具 举报
请问你是在java中编译还是在C++中编译的的.如果在java不能能转换的,因为java类型安全的语言,如果在c++中就可以.
回复 使用道具 举报
int a = 0;
bool b = Convert.ToBoolean(a);~~~  这样就转过来了
回复 使用道具 举报
这个好像是C#中的问题!int a = Convert.ToInt32(b);   
回复 使用道具 举报
net七期王雷 发表于 2013-5-10 22:20
两都不都是值类型么?

在c#中bool  类型占一个字节 ,而且在C#之后,为啦怕数据类型混淆,就不能转换啦.
回复 使用道具 举报
net七期王雷 发表于 2013-5-10 22:20
两都不都是值类型么?

具体的看这里 http://book.51cto.com/art/200805/73862.htm 有C#中关于bool 类型的详细介绍
回复 使用道具 举报
这个要具体问题具体分析了,是什么样的题目让你有了这样的想法呢,我还没遇到过这两种类型的转换
回复 使用道具 举报
大牛二楼回答的非常好。二者是可以相互转换的,事实上,对于CLR来说,bool类型就是int类型(在32位cLR中),二者之间是没有区别的。当值为0时,就假设他是false,当值为非0时,就是true。只不过,由于C#是强类型的语言,他严格的区分类型,不同类型之间不能直接复制,所以编译器不允许直接在bool和int类型相互赋值。但是,有时候就是想在二者之间相互赋值,尤其是在做一些相对底层或者和非托管代码进行交互时,这时候Convert类的ToBoolean和ToInt32就大显身手了。
  在多说一点,ToBoolean方法如果参数是非零值,结果就是true,如果是0,结果就false;
  另外,不仅仅int和string可以相互转换,string等其他类型也可以和bool相互转换。由于是string类比较有意思如下:
  bool result=Convert.ToBoolean("true");结果为true
result=Convert.ToBoolean("false");结果为false.
反之依然。但我实在搞不明白这个方法有什么用,请大神回答

点评

mark最后一句等人回答  发表于 2013-5-13 11:49
回复 使用道具 举报
不知道为什么突然想到这么一个问题呢?
可以一句话概括:风马牛不相及

bool 是判断类型,只有真和假两个值,也就是true和false;
int 是数据类型,只能存储整数;
这两个数据类型的应用范围完全不相关;
所以也就没有必要进行相互转换;
也不能进行相互转换;
回复 使用道具 举报
本帖最后由 崔宏奎 于 2013-5-11 13:01 编辑

对,我一般用
if (x !=0) {}
C#中不允许int当bool用,是因为防止这种误写
int x=1;
if (x==1){}

万一写错了,很难检查出来
if (x=1){}

回复 使用道具 举报
这两者之间可以互转吗?只知道字符型可以和整型互转,整型和小数型互转。我也试一下
回复 使用道具 举报
在底层语言中应该是一个类型吧,在C#里面类型不同
回复 使用道具 举报
使用Convert可以转换成功,只不过没什么意义。请看下图:

QQ截图20130511190341.jpg (89.76 KB, 下载次数: 0)

QQ截图20130511190341.jpg
回复 使用道具 举报
王宝生 发表于 2013-5-11 07:01
大牛二楼回答的非常好。二者是可以相互转换的,事实上,对于CLR来说,bool类型就是int类型(在32位cLR中) ...

在面试题上看到说不可以转换。。
回复 使用道具 举报
你应该像17楼那样亲子的测试一下多好,17楼给出结果了
回复 使用道具 举报
不可以  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马