我理解括号没有区别,那么除了“提高”代码清晰度之外,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) {
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
&&
和||
优先级规则(并不经常出现)的人。 - cHaoif (x = 3)
这样的语句,虽然它是合法的。关键在于这种写法常常会引发人们的错误,因此编译器的开发者认为值得发出警告。 - Daniel Fischer