版面书写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}