以下代码片段未按预期工作:
我想这与运算符优先级有关,但可以有人解释一下具体是什么吗?
$k{"foo"}=1;
$k{"bar"}=2;
if(not defined($k{"foo"}) && not defined($k{"bar"})){
print "Not defined\n";
}
else{
print "Defined"
}
由于$k{"foo"}和$k{"bar"}都有定义,预期输出结果应该是“已定义”。然而,运行代码后却返回了“未定义”的结果。
现在,通过对代码进行测试,我发现在每个not defined()
调用周围加上括号可以产生期望的结果:
if((not defined($k{"foo"})) && (not defined($k{"bar"}))){print "Not Defined"}
我想这与运算符优先级有关,但可以有人解释一下具体是什么吗?