if后面的括号内容有几种?例如:①已经定义了int a=1; if(!a){不进此处}else{进入此处}

②:可以是判断语句if(a==1){进入此处}else{不进此处}
③:可以是赋值语句if(a=2){进入此处}else{不进此处},那么还有别的类型吗,换句话说,if()括号的内容类型有几种,给我详解一下,一定采纳

if后面的括号内容只有一种:逻辑比较,TRUE or FALSE

if (!a) 等价于 if (a==0)
if (a=2) 等价于 a=2; if (a != 0) 恒为FALSE追问

事实上括号内(a=2)是不对的,报错信息:Type mismatch: cannot convert from int to boolean。

追答

if (a=2)在C中是合法的,但编译时可能有警告。
一般可以看见有人喜欢写 if (a=b) .....,实际意义为 if ( (a=b) != 0 ) .....
C#中也许不合法。

追问

Java中也不合法,我记得是在C中可以的,昨晚在Java中就不行了,原来这还是有很多不同之处啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-10
必须是同一个条件
比如a=false
if(!a){进入此处}else{进入别的代码}
if(a==false){进入此处}else{进入别的代码}
if(a==true){进入此处}else{进入别的代码}
if(a==1){执行分支1}else if(a==2){执行分支2}else if(a==3){以此类推}追问

boolean flag = true;
if (flag = false) {
System.out.println("flag=false");
} else {
System.out.println("flag=true");
}
你说这个应该是打印哪一个?其实flag就是一个赋值,那么括号内(flag=false)的结果是true还是false呢?是不是说赋值这件事是true还是false?

追答

是==不是=来比较

追问

我这是赋值运算符,就是这么写的,你说的是等于号,要是那样就简单了。你能给我分析一下吗

追答

不能把赋值表达式用在if条件

追问

你可以试试,JAVA代码

本回答被网友采纳
第2个回答  2016-07-10
规范的来说,括号里只能填判断语句,这才是if的本意
如果写a=2是无意义的,还不如直接赋值

一般这样写,大部分都是写错了,少写了=追问

boolean flag = true;
if (flag = false) {
System.out.println("flag=false");
} else {
System.out.println("flag=true");
}
你说这个应该是打印哪一个?其实flag就是一个赋值,那么括号内(flag=false)的结果是true还是false呢?是不是说赋值这件事是true还是false?

追答

我个人认为输出第一个,赋值相当于恒为真的判断

追问

我也觉得赋值是真,但是事实并非如此,此处输出第二个。
另外:
boolean flag = false;
if (flag = true) {
System.out.println("flag=true");
} else {
System.out.println("flag=false");
}
而这个则输出第一个了,那就是if()括号内的值要是为true,输出第一个;为false,输出第二个。

相似回答