赋值语句的一点疑问

飘过的小牛 2013-11-18 10:53:22
在C++的循环语句中,推荐的代码风格是这样的:

int a = 3;
while(3 == a) {
//do something,在某个时候会改变a的值,退出循环
}


或者这样的:

string s = "hello";
while("h" == s) {
//do something,在某个时候会改变s的值,退出循环
}


上面的代码很简单,本质就是:防止我们将“==”手误携程“=”

最近看了JAVA编程思想后,知道JAVA和C++在这点上有区别:JAVA不允许使用while(a = 0)这样的表达式

但是我有个疑问:C++中的while(a = 0)和JAVA的while(a = 0)有什么不同?我的理解是a = 0完成后得到的是a的值,都相当于while(int)或者while(bool)或者while(string),在C++中可以将这些类型转换成boolean,但是在JAVA中不能转换成bool,所以C++推荐使用while(0 == a)这样的形式,而JAVA出现while(a = 0)会在编译的时候检测出错误(JAVA可能认为这种形式绝大多数是程序员的手误,所以才不逊于这样做)。

上面是我的理解,不知道是不是正确,如果有人能给出更合理的答案就好了。谢谢~
...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2013-11-18
  • 打赏
  • 举报
回复
理解是正确的,java中判断bool值只有true 和 false,其他什么0, null ""都不行
rumlee 2013-11-18
  • 打赏
  • 举报
回复
你的理解是正确的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧