Sự hiểu biết của tôi là dấu ngoặc đơn không có sự khác biệt, vì vậy có bất kỳ lý do nào (ngoài việc "cải thiện" mã rõ ràng) mà Clang cảnh báo điều này là mặc định không? Tôi không muốn thêm dấu ngoặc đơn vì tôi không thích thêm mã vì lợi ích của mã.Tại sao Clang cảnh báo: `'&&' trong '||'`?
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) {
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Làm cách nào để thêm mã cho * lợi ích của * clarity? Các dấu ngoặc đơn ở đây sẽ giúp những người không nhớ các quy tắc về quyền ưu tiên của '&&' và '||' (mà không phải tất cả những gì thường xuất hiện). – cHao
Tôi là tất cả để thêm mã để cải thiện độ rõ ràng. Cá nhân tuy nhiên, tôi thấy tiếng ồn trực quan bổ sung của các dấu ngoặc đơn không cần thiết làm giảm độ trong suốt trong trường hợp này. Khi tôi nhìn thấy dấu ngoặc đơn thêm, tôi ngay lập tức quét toàn bộ dòng tìm kiếm lý do cho họ, khi tôi thấy không có gì tôi phải suy nghĩ một lúc nếu tôi đọc sai hoặc nếu mã được đề cập chỉ đơn thuần là cố gắng "giúp đỡ" tôi để hiểu được ưu tiên của nhà điều hành, mà tôi đã biết. Mã này là * chắc chắn * không cho các lập trình viên thiếu kinh nghiệm, hầu hết mọi người đọc nó sẽ ở cấp độ của tôi, và do đó tôi giả định sẽ cảm thấy như vậy. – mxcl
Mặc dù điểm về sự rõ ràng là hợp lệ, nhưng có vẻ lạ khi cảnh báo một mã hoàn toàn hợp pháp theo các quy tắc của ngôn ngữ. –