黑马程序员技术交流社区

标题: bool可以转换成int么? [打印本页]

作者: net七期王雷    时间: 2013-5-10 22:09
标题: bool可以转换成int么?
本帖最后由 net七期王雷 于 2013-5-15 20:33 编辑

bool可以转换成int么?为什么两种值类型的不能相互转。
作者: 郝文鹏    时间: 2013-5-10 22:16
本帖最后由 郝文鹏 于 2013-5-10 22:19 编辑

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

两都不都是值类型么?

作者: 张迁    时间: 2013-5-10 22:30
你可以用int i = 1代表true,int  i = 0 代表false;干嘛相互转化呢?
作者: 郝文鹏    时间: 2013-5-10 22:35
请问你是在java中编译还是在C++中编译的的.如果在java不能能转换的,因为java类型安全的语言,如果在c++中就可以.
作者: 许大虾    时间: 2013-5-10 22:36
int a = 0;
bool b = Convert.ToBoolean(a);~~~  这样就转过来了
作者: 赵利斌    时间: 2013-5-10 22:47
这个好像是C#中的问题!int a = Convert.ToInt32(b);   
作者: 郝文鹏    时间: 2013-5-10 23:02
net七期王雷 发表于 2013-5-10 22:20
两都不都是值类型么?

在c#中bool  类型占一个字节 ,而且在C#之后,为啦怕数据类型混淆,就不能转换啦.
作者: 郝文鹏    时间: 2013-5-10 23:06
net七期王雷 发表于 2013-5-10 22:20
两都不都是值类型么?

具体的看这里 http://book.51cto.com/art/200805/73862.htm 有C#中关于bool 类型的详细介绍
作者: 淡蓝色    时间: 2013-5-11 00:36
这个要具体问题具体分析了,是什么样的题目让你有了这样的想法呢,我还没遇到过这两种类型的转换
作者: 王宝生    时间: 2013-5-11 07:01
大牛二楼回答的非常好。二者是可以相互转换的,事实上,对于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.
反之依然。但我实在搞不明白这个方法有什么用,请大神回答

作者: 朱传波    时间: 2013-5-11 10:08
不知道为什么突然想到这么一个问题呢?
可以一句话概括:风马牛不相及

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

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

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


作者: xiaoyan0101    时间: 2013-5-11 17:11
这两者之间可以互转吗?只知道字符型可以和整型互转,整型和小数型互转。我也试一下
作者: 李礼彬    时间: 2013-5-11 17:28
在底层语言中应该是一个类型吧,在C#里面类型不同
作者: 闫常国    时间: 2013-5-11 19:04
使用Convert可以转换成功,只不过没什么意义。请看下图:

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

QQ截图20130511190341.jpg

作者: net七期王雷    时间: 2013-5-11 22:06
王宝生 发表于 2013-5-11 07:01
大牛二楼回答的非常好。二者是可以相互转换的,事实上,对于CLR来说,bool类型就是int类型(在32位cLR中) ...

在面试题上看到说不可以转换。。
作者: 石国庆    时间: 2013-5-13 11:56
你应该像17楼那样亲子的测试一下多好,17楼给出结果了
作者: 王明明1004    时间: 2013-5-13 13:30
不可以  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2