我的理解是圆括号没有什么区别,所以Clang警告这是默认的(除了“提高”代码的清晰度),有什么原因吗?我不喜欢添加圆括号,因为我不喜欢为了代码而添加代码。
src/websocket.c:420:43: warning: '&&' within '||' [-Wlogical-op-parentheses]
if (rv == 0 && N != 0 || rv == -1 && errno == ECONNRESET) {
~~ ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
src/websocket.c:420:43: note: place parentheses around the '&&' expression to
silence this warning
if (rv == 0 && N != 0 || rv == -1 && errno == ECONNRESET) {
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
2条答案
按热度按时间a64a0gku1#
自然的趋势是从左到右读,很容易忘记操作符的优先级。也就是说,这只是一个警告,如果你知道自己在做什么,而且你自己的风格允许,那么你可以随意地抑制它。
4c8rllxm2#
我猜测是因为它只是有点不清楚,除非读者非常擅长C的运算符优先规则。
你的表情是这样的:
并且由于
&&
比||
具有更高的优先级,这意味着我猜你就是这个意思,但阅读起来不是很清楚