C 语言有三大类运算符:分别为算术、关系与逻辑、位操作。另外,C 还有一些特殊的运算符,用于完成一些特殊的任务。例如赋值运算符、条件运算符、指针运算符等。
C 语言中两种比较有特色的操作符为复合赋值运算符和自增(减)运算符。这两种运算符使得C 语言有了属于自己的浓郁的味道。正如辛晓琪的歌曲《味道》所唱的那样:“想念你的笑,想念你的外套,想念你白色袜子,和身上的味道”。
复合赋值运算符相对来说比较简单,而自增、自减运算符因为分为前缀和后缀形式,所以在用法上复杂一些。下面我主要以自增运算符为例进行说明,自减运算符与它类似。一般我们都知道++i 和i++的区别,如果你的C 语言教材上没说明它们的区别,赶快把手头的那本教材扔了,然后去买一本别的,顺便再去买一本赵岩的《C 语言点滴》。
前缀和后缀的区别只在自增运算符用在表达式中时才有所体现。如果自增运算符单独使用,那么最后的结果没有任何区别,如程序4-1 第1 行和第2 行所示,都是把变量i增加了1。
程序4-1 自增运算符示例
1 i++;
2 ++i;
3 m=i++;
4 m=++i;
5 m=*p++; /* 等价于下面两个语句 */
6 m=*p;
7 p++;
当