前言
除了基本的算术运算符之外,C语言中还提供了特殊的复合赋值运算符,复合赋值运算就是把“运算”和“赋值”两个动作结合起来。
一、什么是复合赋值运算符
赋值符“=”之前加上其他二目运算符可构成复合赋值符,经常使用的复合运算符主要有算术复合运算符和位复合运算符。复合赋值运算符和普通赋值运算符的优先级都是相同的,且都具有右结合性,运算过程相当于变量的值累加上右边表达式的值,存放到该变量中,例如x*=y+3等价于x=x*(y+3)。
二、程序实例
代码如下:
#include <stdio.h>
void main()
{
int a=10,b,c;
a+=a-=a*=a;
printf("a=%d\n",a);
a=10,b=3;
printf("exp=%d\n",a-b+++1);
a=b=c=2;
a*=b=c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
b*=c+=a/=c+2;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
运行结果:
结果分析:
- 对于代码中的语句a+=a-=a*=a;来说,根据赋值运算符的结合性,表达式的实际运算过程是:a=a*a、a=a-a、a=a+a,因此最后计算结果为0.
- 对于语句a*=b=c;来说运算过程为:b=c、a=a*b。
- 语句b*=c+=a/=c+2,的计算过程为:a=a/(c+2)、c=c+a、b=b*c。
拓展应用:
应用复合的赋值运算符时经常会出错,在写表达式的过程中,最好利用圆括号把表达式的主要功能括起来,不要让编译器来分析表达式中具体的操作数的值,例如表达式a+b+=c+=3是不合法的表达,应该加上(),正确的表达式是a+(b+=c+=3)。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了C语言中复合赋值运算符的应用。