**
自增自减及逗号表达式
**
一.自增、自减运算符
1.自增运算符++和自减运算符–都是单目运算符,功能是使变量的值加1或减1。
2.自加或自减只能用于变量,而不能用于常量或表达式。
3.用于++、–运算的变量只能是整型、字符型和指针型变量
运行下面的程序,观察并分析运算规则
#include<stdio.h>
int main( )
{
int a,b,c,d;
a=1; b=2; c=3; d=4;
printf("a++的值为:%d \n",a++);
printf("a的值为:%d\n",a);
printf("++b的值为:%d \n",++b);
printf("b的值为:%d\n",b);
printf("c--的值为:%d\n",c--);
printf("c的值为:%d\n",c);
printf("--d的值为:%d\n",--d);
printf("d的值为:%d\n",d);
}
解析
- 第一个输出为1,因为a++是先输出再自加1,所以该printf只输出第一步,第一步为赋值。
- 第二个输出问a的值,因为第一次已经输出过a++的值了,第一步是赋值,所以这里属于第二步,为自加1。
- ++b属于先自加,再赋值。之后就以此类推···
注意
表达式a++与++a的值不同,表达式a- -与- -a的值也不同。
+ +和- -的结合方向是“自右至左”,其优先级高于算术运算符。
二.逗号运算符和逗号表达式
- 逗号表达式的一般形式为: e1,e2,e3,…,en
注意:(1)逗号是一个多目运算符,并且优先级最低 ,而且是左结合;又称之为顺序求值运算符,第 1 个求 e1 ,其次e2,最后一个求 en 。
(2)整个表达式的值为 en 的值。
(3)与函数中参数分隔加于区别:例如
- printf ( “%d, %d, %d”, a, b, c );三个值从右到左运算
- printf ( “%d”, (a, b, c) );三个值从左到右运算