The expression precedence is as follows: (lowest to highest)
|| operator, left associative && operator, left associative ! operator, nonassociative Relational operators, left associative Assignment operator, right associative + and - operators, left associative *, / and % operators, left associative ^ operator, right associative unary - operator, nonassociative ++ and -- operators, nonassociative
This precedence was chosen so that POSIX compliant bc
programs
will run correctly. This will cause the use of the relational and
logical operators to have some unusual behavior when used with
assignment expressions. Consider the expression:
a = 3 < 5
Most C programmers would assume this would assign the result of "3 <
5" (the value 1) to the variable "a". What this does in bc
is
assign the value 3 to the variable "a" and then compare 3 to 5. It is
best to use parentheses when using relational and logical operators
with the assignment operators.
Go to the first, previous, next, last section, table of contents.