因此,我正在查看A-Levels计算机科学的一些过去的论文,并偶然发现了这一点:
现在,我的第一反应是第6行不需要括号。原因是代数运算符优先于比较优先于布尔运算符的比较。
作为Java的一个小例子:
int a = 100;
int b = 100;
int c = 100;
int d = 100;
if( ((c+d) > 180) && ((a+b+c+d)) >= 320)
System.out.println("greater");
if(c+d > 180 && a+b+c+d >=320)
System.out.println("greateragain");
两个if语句都被评估为true。
所以,我认为括号只是为了人类在这种情况下的可读性还是......?
答案 0 :(得分:2)
您可以说:"使用括号可以明确评估评估的优先级,无视操作员对使用语言的优先级。"
上述评论很好地描述了运算符优先级是特定于语言的。例如,在Pascal中,AND之类的逻辑运算符似乎比数学运算符具有更高的优先级,并被解释为二进制AND。相比之下,在C中,&&优先级较低,因此可以保存一些括号。
因此,在可能存在歧义的情况下总是使用括号,或者至少在您掌握使用中的语言之前,这听起来是个明智的想法。
答案 1 :(得分:2)
BASIC是利用逻辑运算符和逐位运算符可以共享相同助记符这一事实的早期语言之一。
在示例中 - c+d > 180 AND a+b+c+d >= 320
可以(一段想象力)被解释为(c + d) > (180 AND a) + b + c + (d > 320)
。因此,有必要添加括号以消除所有歧义。