[学习笔记]Java中的boolean和C中的bool

今天在看《ThinkInJava》学习的时候,看到Java中boolean类型无法参与和其它类型的运算时,我产生了这些疑惑:
1.Java的boolean和C的bool是否相同?
2.Java的boolean存储方式是什么?占用空间多少?
3.为什么Java的boolean无法和其它数据类型如int作运算?

搜了很多资料,感觉这个网站基本解决了我的所有困惑:
https://www.geeksforgeeks.org/comparison-boolean-data-type-c-java/
我凭借我现在的理解,依次来回答这些问题吧。
1.不同。C中的bool以单字节整形的形式进行存储,可以用%d的形式输出。而且C中的bool可以参与与其它类型元素的运算。
2.存储方式都是0或者1,占用空间取决于虚拟机。比较主流的答案是4字节(32比特来存一个只需要1比特就足够的信息,真是奢侈)。
3.因为Java的编译器锁定了boolean类型和其它类型不一样,在输出是boolean的输出结果是true/false,和C的0/1不一样。所以可以认为,不允许做运算(运算会报错)是Java编译器干的好事。

顺带一提,我还有新发现。在C中对bool类型进行赋值的时候会出现自动转换。非0的值会被自动转化成1,只有0值才会对应false。
如:

bool a = -7.3;
printf("%d,%d,%d",a, a == -7.3,a == true);

在C语言中并没有编译错误,输出结果是1,0,1

感谢大家的支持和点赞。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邵政道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值