Next: Initialization Up: Errors statically detected Previous: Assignment

## Operators

- incompatible types in ?:, <type1> <> <type2> the two values returned by an arithmetic if operator have different types.

  `{ (1) ? "1" : 2; } /*incompatible types in ?:, char* <> int */`

- pointer negation and void negation

- pointer complement and void complement
- ! void
- <operator> arguments have different types arguments are pointers but not of the same type.

- bad argument in <type1> <operator> <type2>

  `{ 1 - "qwe"; }`

- illegal array reference when you attempt to reference an array where there is no array or int (or char) index:

- cast unacceptable operand of & you cannot reference a cast. Smac accepts cast at the left of an assignment, but it is probably too permissive.
- illegal reference

  `{ &1; }`

- illegal indirection (not a pointer), in an access or an assignment.

  `{ *1; }`