该程序在第二行B显示错误结果,如果第一句为真,他认为第二个条件为真而未经测试。 你可以给我提供帮助吗?
int N=10, P=5;
char C='S';
boolean B;
N=5;P=2;
B= (N++>P)||(P++ !=3);
System.out.println("A : N= "+N+" P="+P+" B="+B);
N=5; P=2;
B= (N++ <P)|| (P++ !=3);
System.out.println("B : N= "+N+" P="+P+" B="+B);
N=5; P=2;
B= (++N ==3) && (++P ==3);
System.out.println("C : N= "+N+" P="+P+" B="+B);
N=5; P=2;
B= (++N ==6) && (++P ==3);
System.out.println("D : N= "+N+" P="+P+" B="+B);
N=C;
System.out.println("\nE :C= "+C+" N = "+N);
[在此处输入图像说明] [1]
[1]:https://i.stack.imgur.com/Le5lE.png程序的结果
答案 0 :(得分:1)
这就是OR的工作方式。只有一个ORed表达式必须为true才能使整个表达式为true,因此测试在第一个表达式处停止以计算为true。如果您希望表达式失败,如果一个子表达式为false,请使用AND(&amp;&amp;)。
答案 1 :(得分:0)
好的,你为什么不用“++ P”而不是“P ++”? 它可以首先将P的当前值(其为2)与数字3进行比较,然后P递增。如果使用“++ P”,您将更改操作的顺序。
答案 2 :(得分:0)
图片中的节目输出是正确的
如果至少有一个句子为真,则逻辑运算符||
“或”返回true,因此如果第一个句子为真,则无需查看下一个句子;事实上,对于第二句可以假设的每个值,句子B= (N++ <P)|| (P++ !=3);
都是正确的
可能你的意思是独占或(XOR) ^
,只有当一个句子为真且另一个为假时才是真的?