版面书写R-1-2-4强制
禁止二义性逻辑表达式
二义性逻辑表达式是指在没有使用括号明确优先级的情况下,使用逻辑运算符连接的表达式。
由于逻辑运算符的优先级和结合性可能导致不同的解释,因此在编写代码时应避免这种情况。
x && y || z 形式的二义性逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if (x && y || z) {}禁止二义性逻辑表达式 [gjb8114-r-1-2-4]4}
x || y && z 形式的二义性逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if (x || y && z) {}禁止二义性逻辑表达式 [gjb8114-r-1-2-4]4}
!x && y 形式的二义性逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if (!x && y) {}禁止二义性逻辑表达式 [gjb8114-r-1-2-4]4}
!x || y 形式的二义性逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if (!x || y) {}禁止二义性逻辑表达式 [gjb8114-r-1-2-4]4}
明确优先级的 x && y || z 形式逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if ((x && y) || z) { }4}
明确优先级的 x || y && z 形式逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if (x || (y && z)) { }4}
明确优先级的 !x && y 形式逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if ((!x) && y) { }4}
明确优先级的 !x || y 形式逻辑表达式
test.c
1void foo(int x, int y, int z)2{3 if ((!x) || y) { }4}