如果你回答这个问题我会感谢你的....这是一个icse 10级标准问题。
我需要知道它们之间的区别 (p!= q)和!(p == q)
答案 0 :(得分:9)
这里有两个不同的operators:
x != y
检查x不等于y,而
!(expr)
使用一元否定运算符(!
)来检查expr
是否为真。所以你的第一个表达式检查 p不等于q 。您的第二个表达式检查表达式 p等于q 是否为真。这些(当然)是等价的。
答案 1 :(得分:8)
我需要知道(p!= q)和!(p == q)
之间的区别
在Java中,基本上没有。
p!=q
确定p
是否不等于q
并且boolean
true
如果它们不相等,{false
1}}如果他们是。)
!(p==q)
首先确定p
和q
是否相等,并为我们提供boolean
(如果是true
,{{1如果他们不是,那么颠倒那个false
(如果他们不相等则给我们boolean
,true
如果他们是平等的。
是的,为两者发出相同的字节码:
iload_1 iload_2 if_icmpeq [address]
加载值并且如果相等则跳过""操作
答案 2 :(得分:2)
对于(p!=q )
,你有:
true!=false--->True
true!=true---->False
false!=false-->False
false!=true--->True
对于!(p==q )
,你有:
!(true==false)--->True
!(true==true)---->False
!(false==false)-->False
!(false==true)--->True
所以你看到没有区别
答案 3 :(得分:2)
它们功能相同但字节码不同。
第一个可能更有效(取决于编译器),因为检查是XOR op的副作用。但在第二个中,进行了比较,并根据结果设置了true
或false
。
使用ECJ编译器(合规级别1.7):
a=(p!=q)
12: iload_2
13: iload_3
14: ixor
15: istore_1
a=!(p==q)
24: iload_2
25: iload_3
26: if_icmpne 33
29: iconst_0
30: goto 34
33: iconst_1
34: istore_1
答案 4 :(得分:1)
我需要知道(p!= q)和!(p == q)
之间的区别
两者在 Java 中逻辑相同,检查条件p
不等于q
答案 5 :(得分:0)
是p的值与q
不同语句(p == q)给出的相反值 即
如果p等于q,则返回false
如果不是,则为真。
答案 6 :(得分:0)
我需要知道(p!= q)和!(p == q)之间的区别?
(P!= q)的
检查
p
是否不等于q
,然后将其设为真
!(第== q)的
(p == q)检查两者是否相等,然后使其成立。否定运算符 (!)与布尔结果相反。即假。 这自然使它等于
(p!=q)
,因为当p不是时,两个表达式都返回true 等于q
答案 7 :(得分:0)
我认为不同的是,即使你没有检查整数,也可以知道两个数字不相等。
(p!=q)
将停在第一个差异
!(p==q)
将在补充结果之前检查它们是否完全相等
答案 8 :(得分:0)
同样的事情,你可以尝试写下这样的真值表:
(a != b)
0 0 0
1 1 0
0 1 1
1 0 1
和
! (a == b)
0 0 1 0
1 1 0 0
1 0 0 1
0 1 1 1
如您所见,0, 1, 1, 0
是!=
的结果,是!( ==)
答案 9 :(得分:0)
p != q implies that p is not equal to q
!(p==q) implies first execution of statement p==q and then the negation of the boolean value return after execution of first statement
假设p = 5且q = 5
1>
p != q: In this case, result of execution of the statement will be false.
2 - ;
!(p == q): In this case, result of execution of the first statement (p == q) will be true. Then negation of true will be false
假设p = 5且q = 6
1>
p != q: In this case, result of execution of the statement will be true.
2 - ;
!(p==q): In this case, result of execution of the first statement (p==q) will be false. Then negation of false which will be true
答案 10 :(得分:0)
真相表:
p q!p!q对于(p!= q)For!(p == q),即等价于(!p)!=(!q)
0 0 1 1 cond false cond false
0 1 1 0 cond true cond true
1 0 0 1 cond true cond true
1 1 0 0 cond false cond false
答案 11 :(得分:0)
实际上,(p!=q)
和!(p==q)
之间没有任何区别。
如果true
不等于p
,他们都将返回q
,如果false
等于p
,他们都会返回q
。
答案 12 :(得分:-1)
在Java 中,没有运算符重载,(p!=q)
和!(p==q)
之间没有区别。 在Java中,所有运算符都是严格定义的。他们遵循数字逻辑规则。
但是,在运算符重载的语言中,如C++
,这些可能不等效,因为运算符!
和!=
可能被定义为执行不符合规则的操作数学逻辑。
这些将被翻译为:
(p!=q) : p.operator!=(q)
!(p==q) : ! p.operator==(q)
请注意!
运算符应用于bool变量,而不是对象。
答案 13 :(得分:-1)
(p!=q)
首先检查p
和q
是否相等,然后给出布尔数据类型。
而{。!(p==q)
首先检查p
和q
是否相等,并给出布尔数据类型,然后反转该布尔值。