'!' Heeft bijna de hoogste prioriteit van ALLE operatoren. Het wordt dus gezien als (!bTest)==false
Dit had je in eender welk boek over C of C++ kunnen vinden hoor.
Dit had je in eender welk boek over C of C++ kunnen vinden hoor.
Hier een lijst van de prioriteiten zoals die gelden in alle C achtige talen:
Je zit dus dat het ! een veel hogere prioriteit heeft dan de vergelijking. Deze ! neemt dus als eerste z'n argumenten wat dus zorgt voor ((!bTest) == false).
Overigens kan je in geval van twijfel altijd beter wel haakjes zetten.
Overigens is (b == false) of (b == true) een onzinnige vergelijking. Beter en duidelijker is dan simpelweg !b of b te gebruiken als conditie.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| ....
>
{right:
Expr "++" -> Expr
Expr "--" -> Expr
}
> {right:
"++" Expr -> Expr
"--" Expr -> Expr
"+" Expr -> Expr
"-" Expr -> Expr
"~" Expr -> Expr
"!" Expr -> Expr
"(" Type ")" Expr -> Expr
}
> {left:
Expr "*" Expr -> Expr
Expr "/" Expr -> Expr
Expr "%" Expr -> Expr
}
> {left:
Expr "+" Expr -> Expr
Expr "-" Expr -> Expr
}
> {left:
Expr "<<" Expr -> Expr
Expr ">>" Expr -> Expr
Expr ">>>" Expr -> Expr
}
> {left:
Expr "instanceof" RefType -> Expr
Expr "<" Expr -> Expr
Expr ">" Expr -> Expr
Expr "<=" Expr -> Expr
Expr ">=" Expr -> Expr
}
> {left:
Expr "==" Expr -> Expr
Expr "!=" Expr -> Expr
}
> Expr "&" Expr -> Expr
> Expr "^" Expr -> Expr
> Expr "|" Expr -> Expr
> Expr "&&" Expr -> Expr
> Expr "||" Expr -> Expr
> Expr "?" Expr ":" Expr -> Expr
> {right:
LHS "=" Expr -> Expr
LHS "*=" Expr -> Expr
LHS "/=" Expr -> Expr
LHS "%=" Expr -> Expr
LHS "+=" Expr -> Expr
LHS "-=" Expr -> Expr
LHS "<<=" Expr -> Expr
LHS ">>=" Expr -> Expr
LHS ">>>=" Expr -> Expr
LHS "&=" Expr -> Expr
LHS "^=" Expr -> Expr
LHS "|=" Expr -> Expr
} |
Je zit dus dat het ! een veel hogere prioriteit heeft dan de vergelijking. Deze ! neemt dus als eerste z'n argumenten wat dus zorgt voor ((!bTest) == false).
Overigens kan je in geval van twijfel altijd beter wel haakjes zetten.
Overigens is (b == false) of (b == true) een onzinnige vergelijking. Beter en duidelijker is dan simpelweg !b of b te gebruiken als conditie.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment