二元和三元运算符的运算数和运算符的位置比较固定,一元运算符可能在运算数之前,也可能在之后。这产生一些有趣的形式。
可叠加
- 一元正号运算符和负号运算符都可以叠加。
- + + + +a还是a, - - - -a也是a.
- - + a得到-a, + - - a得到a.
- +a + - + + b * +c是a - b * c.
- ++++a和----a会编译出错,如编译器扫描按最长字符模式会认为是自增或自减的复合操作。
自增自减
大部分现代编程语言都支持++和--, 提供快速加1和减1的操作。汇编语言inc和dec与此对应,最早在Algol 68就已经有自增和自减运算符。它在B语言和C语言中得到发展,成为简洁的代表。Fortran和COBOL并没有自增和自减运算符,和C语言同时代的Pascal也没有,Pascal使用函数inc/dec完成。
正号负号
- C/ObjC/C++/Java/C#/Kotlin 等编程语言均支持一元正号和负号运算符。