黑马程序员技术交流社区
标题:
if条件表达式能不能为赋值语句
[打印本页]
作者:
王潇男
时间:
2013-6-11 16:42
标题:
if条件表达式能不能为赋值语句
本帖最后由 王潇男 于 2013-6-12 18:16 编辑
//代码1
复制代码
//代码2
复制代码
代码1
boolean t = true;
if(t = false)
System.out.print("a");
System.out.print("b");
输出结果为b
代码2
boolean f = false;
if(f = true)
System.out.print("a");
System.out.print("b");
输出结果为ab
条件表达式为赋值语句也行?如上代码变量被赋值成什么结果就为什么?求解释...
作者:
黑马王瑞
时间:
2013-6-11 17:06
这样写代码没有任何意义,可读性很差.
作者:
谢辉林
时间:
2013-6-11 17:11
本帖最后由 谢辉林 于 2013-6-11 17:13 编辑
这里所表达的逻辑条件并不是“f或t的内容是否等于false或true”,而是向变量f或t中送入数据false或true。
作者:
张歆明
时间:
2013-6-11 17:57
可以
boolean m = true;
if(m = false) {
System.out.println("true");
}
但是 你要保证你的单纯的赋值表达式最后被赋值变量的值是boolean类型的
否则编译器报错
作者:
紫衣侯
时间:
2013-6-11 18:54
if条件里最终结果只要是boolean值就行,含有任何运算都行。 上面两个代码if的条件运算最后都是boolean t,代码1,false赋给了t,所以不进if条件,代码2,正好相反。
作者:
shiweiCao
时间:
2013-6-11 22:12
如果是C++或C
if(i = 5){
printf("a\n");
}
else {;}
运行后执行if后面的语句 C++中非0就是真 Java里不允许if语句中是非boolean类型的变量
java中的话,if为判断结构语句,判断就是是与非.
就只有布尔型可以这样的.也就是说,赋值时, 结果必须为一个布尔的返回值.
if(b=false){
}
将b赋值为false,
然后这个表达式成了
if (false){
}
这个可以理解了吧。
if 后面的表达式是boolean型的。我想应该是明白了.
赋值表达式也有返回值。 b=false 这个表达式的值就是false。
如果不是boolean,这个显然编译不通过。
作者:
shiweiCao
时间:
2013-6-11 22:14
补充点,这个问题,没什么太大的意义,知道有明白了就可以了. 不必深究
作者:
曹宇
时间:
2013-6-12 02:19
第一个 if 中 t被赋值为假 就相当于 if(false) 所以输出b
第二个 t被赋值为 真 就相当于if(true) 输出为 ab
if中接收 任何能产生boolean型的表达式 无论你表达式在复杂 只要你的结果只有1个 且为 boolean类型,那么编译都会通过。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2