计算机语言中逻辑运算符“||”和“&&”的短路现象。
实话说第一次看到这个实验题时一脸懵逼,“短路”?电源通向用电设备(负载)的导线不经过用电设备?我当时搜到了许多许多回答,当然核心知识一致:“||”前为真则不执行后面的语句;“&&”前为假则不执行后面的语句。这两句话当然能看懂,但问题是,到底什么才是短路?怎样编写程序来测试是否短路?我和同学想了很久,终于明白了“短路”是什么意思,并写出了测试程序。
被高中物理电学“毒害”颇深。
这是当明白所谓计算机的“短路”是什么后的第一想法。以下仅个人见解,不一定是对的(畏畏缩缩~):
此处的“短路”在上面提到的核心知识中,可理解为“为了节省执行时间”而造成的短路现象。不过,这其中还有我自己的一点疑惑,比如:在if语句中,只有在if的所有条件都满足时才会执行之后的语句,而当“||”或“&&”出现短路现象时,if的执行条件有误,可能会导致程序输出有误。这一点我想不明白,还请大佬们指教一下小白,感谢!
以下是我用Java写的一个测试程序,二者都只用了一个测试样例(也不知道对不对)。
public class Main{
public static void main(String args[]){
int m=1;
int n=2;
boolean a=m>2;//a为假
boolean b=m<n;//b为真
System.out.println("----&&的短路测试----");
System.out.println(a&&(m>0));//仅执行前一句
System.out.println("----||的短路测试----");
System.out.println(b||(m>0));//仅执行前一句
}
}