本帖最后由 李楠 于 2011-12-23 13:12 编辑
定义了一个FileReader类的实例 fr。
如果fr.read()读到了文件最后,会返回一个-1,就表示读到了文件最后了。
但是这个代码里while((ch = fr.read()) != -1)
用while循环里那段代码表示读到文件末尾,这个代码为什么不是表示:如果fr.read()能赋值给ch为真,不能为假呢。
我这里想不明白。
我不明白的是(ch = fr.read())这个表达式可以和-1 比较。
把我最后发的提到前面来。
int func(){
return -1;
}
void main() {
int ch ;
while((ch = func()) != -1) {
printf("aaa");
}
getch();
}
看我写的这个代码,在c或者c++的编译器里,这个while循环是不执行的。
因为和-1作比较的是表达式,不是ch那个变量。
想要这个while执行,改成while((ch = func()) != 1),因为(ch = func())赋值成功,返回了true,然后这个true和-1比较。
可以在java里就不是这样了,为什么ch会去和-1做比较呢? |