The 4.0.14 says that the precedence of "not", "and", "or" and "imply" have lower precedence than "!", but the implementation seems to treat them interchangably ("not" is the same as "!"). The behavior of 4.1.19 is consistent with 4.0.14 and the documentation of 4.1.19 reflects that behavior. So it seems the issue is only in the documentation of 4.0.14.
Here is a test expression: not true && false According to the documentation in 4.0.14 the "&&" operator has higher precedence over "not" and hence the expression should compute to "true", but the implementation computes "false". The behavior (of computing "false") is consistent with alternative operators in C++ (see http://en.cppreference.com/w/cpp/language/operator_alternative ). Whereas C does not allow "bool" and other keywords keywords.
Just found that C99 supports the keywords by including the following: #include <stdbool.h> // bool, true, false #include <iso646.h> // not, and, or The behavior is consistent with C++ (and Uppaal implementation).