【发布时间】:2022-07-16 18:41:32
【问题描述】:
int num;
scanf("%d", &num);
if (num % 4 == 0 && num%100 != 0 || num % 400 == 0)
printf("%d", 1);
else
printf("%d", 0);
在这个逻辑中,我发现我不需要在AND 条件中执行(),它在OR 条件前面。
if (*(num % 4 == 0 && num%100 != 0)* || num % 400 == 0)
在OR 条件前只需要if (num % 4 == 0 && num%100 != 0 || num % 400 == 0) 而没有()。
所以,似乎(A && B || C) 像((A && B) || C)
但它似乎可以作为(A && (B || C)) 条件工作。
为什么在这种情况下不需要()? A和B条件从头开始自动分组?
【问题讨论】:
-
如有疑问使用括号。请记住,在表达式中添加多余的括号并没有什么坏处。
-
您可以在这里查看:C Operator precedence
-
与流行的看法相反,单行上的大多数运算符不会赢得价格 :) 始终在 && 和 || 的任何复杂操作数周围使用括号被认为是一种好习惯运算符,即使您知道所涉及的每个运算符的运算符优先级。
标签: c if-statement conditional-statements logic