1. 赋值运算符=
的优先级仅高于逗号运算符
2. 赋值运算符的结合顺序自右向左,先计算=
右边的表达式的值,再把这个值赋给左边的变量
3. 赋值表达式最终的值为=
左边变量中的值
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a, b;
a = (b=7);
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
=================================
a=7
b=7
real 0m0.010s
user 0m0.000s
sys 0m0.000s
请按 ENTER 或其它命令继续
4. 复合赋值运算符+=, -=, *=, /=, %=
的优先级与赋值运算符=
一样
变量
a
的值为9
,计算表达式a+=a-=a+a
的值
+=
与-=
的优先级一样,都是自右向左的结合顺序,所以首先计算a+a
的值,为18
- 接下来计算
a-=18
,结果为a
的值变成-9
,表达式的值也是-9
- 最后计算
a+=-9
,注意此时a
的值为-9
,所以最后结果为-18
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int a = 9;
printf("%d\n", a+=a-=a+a);
return 0;
}
=================================
-18
real 0m0.023s
user 0m0.000s
sys 0m0.010s
请按 ENTER 或其它命令继续
网友评论