黑马程序员技术交流社区

标题: 新手不知道的知识 [打印本页]

作者: 倦鸟识山    时间: 2015-9-21 19:02
标题: 新手不知道的知识
操作符小知识:

while(x=y){
        //...
}

问题:这个语句在进行什么操作?

        很明显程序员想测试是否“相等”(==),但是这个语句实际是在进行赋值。
        在C和C++中,如果y是一个非零值,那么这种赋值结果肯定是true,这样语句便会得到一个无穷循环。
        在Java中,除非x和y都是布尔值,否则这个表达式结果是int值,编译器会抛出编译时错误,阻止程序进一步运行。
作者: panpanpan138    时间: 2015-9-21 20:05
谢谢分享
作者: maxwell247    时间: 2015-9-21 20:41
说的不错。 while() 括号中只接受boolean类型值。
作者: stream_lin    时间: 2015-9-21 21:09
66666。长知识了
作者: purgatory    时间: 2015-9-21 21:17
恩 不错
作者: heimatai6    时间: 2015-9-21 21:28
?????
作者: 381890216    时间: 2015-9-25 15:09
想想确实,while 只接收boolean,                         感觉C和C++的这种结果有种强行通过的感觉
作者: 妳的微笑❤    时间: 2015-10-8 10:03
谢谢大神分享
作者: fwqk123    时间: 2015-10-8 10:24
谢谢大神分享
作者: SF_NEVERMORE    时间: 2015-10-8 10:59
还以为括号中不为零的话就是死循环,不过现在记住了,在java中,如果括号中表达式结果不是布尔值,会报错,谢谢
作者: itheima_casper    时间: 2015-10-8 13:35
C++中 非0都视为true    详细分享
作者: 如梦丶似幻    时间: 2015-10-8 20:06
感谢分享~~~
作者: 长颈鹿的烦恼    时间: 2015-10-8 20:10
非常感谢~
作者: michael_wlq    时间: 2015-10-8 22:24
不错不错
作者: angusaya    时间: 2015-10-8 22:47
感谢分享~\(≧▽≦)/~




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