簡體   English   中英

為什么Clang警告:''&&'在'||'`中?

[英]Why does Clang warn: `'&&' within '||'`?

我的理解是括號沒有區別,所以有沒有任何理由(除了“改善”代碼清晰度)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) {
                                 ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~

自然傾向是從左到右讀取它,並且很容易忘記運算符優先級。 也就是說,這只是一個警告,如果你知道你正在做什么,你自己的風格允許它,你可以隨意壓制它。

我猜是因為它只是有點不清楚,除非讀者非常擅長C的運算符優先級規則

你的表達是這樣的:

if (A && B || C && D)

因為&&具有比||更高的優先級 , 它的意思是

if ((A && B) || (C && D))

我猜你的意思是什么,但閱讀時並不是很清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM