日期:2014-05-20  浏览次数:20711 次

赋值语句的一点疑问
在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可能认为这种形式绝大多数是程序员的手误,所以才不逊于这样做)。

上面是我的理解,不知道是不是正确,如果有人能给出更合理的答案就好了。谢谢~
JAVA

------解决方案--------------------
你的理解是正确的。
------解决方案--------------------
理解是正确的,java中判断bool值只有true 和 false,其他什么0, null ""都不行