好 下面我们开始学习自增自减的运算 和逗号运算符号
自增、自减运算符:++ , -- (使变量的值增1或减1)
结合率:自右至左。
例如: ++i , --i (先自增或自减)
i++ , i-- (后自增或自减)
大家看肯定看不懂 现在就举几个例子如下
前置 ++i --i (先执行i+1或者i-1再是要i的值)
后置--i ++i(先使用i的值,再执行i+1或者i-1)
例如j=3; k=++j; //k=4 j=4
j=3;k=j++; //j=4 k=3
j=3; printf("%d",++j); //4,j=4
j=3; printf("%d",j++); //3 j=4
a=3;b=5;c=(++a)*b; //c=20,a=4
a=3;b=5;c=(a++)*b; //c=15,a=4
②结合率:自右至左
-i++ 相当于 -(i++)
i+++j 相当于 (i++)+j
例如:main()
{ int x=8,y,z;
y=(++x)+(x++)+(++x);
z=(--x)+(x--)+(++x);
printf(“y=%d,z=%d,x=%d”,y,z,x);
}
则经过运算,y的值为30、z的值为33。而变量x的值为10。
自增自减的总结
对于含有自增和自减运算的表达式,C语言系统一般按以下三步来完成计算
① 将所有先自增、自减运算抽出进行计算。
② 计算的结果带入表达式中,计算表达式的值。
③ 再将所有后自增、自减运算抽出进行计算。
上例中的表达式y=(++x)+(x++)+(++x); C语言系统先进行两次x的自增计算,使x的值由8变为10。然后将10带入表达式中计算(即计算“x+x+x”),得结果30,并赋给变量y。最后再进行一次x的后自增计算,使变量x的值由10变为11。
注意:
当自增、自减运算出现在函数的参数中时,它们不按该方法进行计算。在函数中的计算方法由C语言系统采用扫描格式决定。函数的参数中都避免使用自增、自减运算符。
3、逗号运算符和逗号表达式
逗号运算符: ,
格式: 表达式1, 表达式2, 表达式3, , 表达式n
优先级: 最低
从左向右计算每个表达式的值,逗号表达式的值为表达式n的值。
例如:
y=(x=3,5+6,x+5) 逗号表达式的值为8。
(a = 3,b = 5,b+ = a,c = b* 5),求逗号表达式的值?
答案:40。前两个表达式只是赋值,从第三个开始计算,b+=a,即b=b+a,即b=5+3,b=8,求最后一个表达式,c=b*5=8*5=40.因为逗号表达式的值是最后一个表达式的值,所以整个逗号表达式的值为40,其他各变量最后的值依次为:a=3,b=8,c=40