C语言赋值运算符 #
一、赋值运算符概述 #
1.1 基本赋值运算符 #
c
int a = 10;
= 是基本赋值运算符,将右边的值赋给左边的变量。
1.2 复合赋值运算符 #
| 运算符 | 等价形式 | 示例 |
|---|---|---|
| += | a = a + b | a += 5 |
| -= | a = a - b | a -= 5 |
| *= | a = a * b | a *= 5 |
| /= | a = a / b | a /= 5 |
| %= | a = a % b | a %= 5 |
| &= | a = a & b | a &= 5 |
| |= | a = a | b | a |= 5 |
| ^= | a = a ^ b | a ^= 5 |
| <<= | a = a << b | a <<= 5 |
| >>= | a = a >> b | a >>= 5 |
二、基本赋值 #
2.1 简单赋值 #
c
#include <stdio.h>
int main() {
int a = 10;
float b = 3.14;
char c = 'A';
printf("a = %d\n", a);
printf("b = %f\n", b);
printf("c = %c\n", c);
return 0;
}
2.2 连续赋值 #
c
#include <stdio.h>
int main() {
int a, b, c;
a = b = c = 10;
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
赋值从右向左结合。
2.3 赋值表达式的值 #
c
#include <stdio.h>
int main() {
int a;
printf("赋值表达式的值: %d\n", a = 5);
if ((a = 10) > 5) {
printf("a = %d\n", a);
}
return 0;
}
赋值表达式的值是赋值后左值变量的值。
三、复合赋值运算符 #
3.1 算术复合赋值 #
c
#include <stdio.h>
int main() {
int a = 10;
a += 5;
printf("a += 5: %d\n", a);
a -= 3;
printf("a -= 3: %d\n", a);
a *= 2;
printf("a *= 2: %d\n", a);
a /= 4;
printf("a /= 4: %d\n", a);
a %= 3;
printf("a %%= 3: %d\n", a);
return 0;
}
输出:
text
a += 5: 15
a -= 3: 12
a *= 2: 24
a /= 4: 6
a %= 3: 0
3.2 位运算复合赋值 #
c
#include <stdio.h>
int main() {
int a = 0xFF;
a &= 0x0F;
printf("a &= 0x0F: 0x%X\n", a);
a |= 0xF0;
printf("a |= 0xF0: 0x%X\n", a);
a ^= 0xFF;
printf("a ^= 0xFF: 0x%X\n", a);
a <<= 2;
printf("a <<= 2: 0x%X\n", a);
a >>= 4;
printf("a >>= 4: 0x%X\n", a);
return 0;
}
四、赋值与初始化 #
4.1 初始化 #
c
int a = 10;
这是初始化,在定义时赋值。
4.2 赋值 #
c
int a;
a = 10;
这是赋值,在定义后赋值。
4.3 区别 #
c
const int a = 10;
const int b;
b = 20;
const变量必须初始化,不能赋值。
五、自增自减与复合赋值 #
5.1 对比 #
c
a++;
a += 1;
a = a + 1;
这三者效果相同,但 a++ 更简洁。
5.2 区别 #
c
#include <stdio.h>
int main() {
int a = 5;
int b;
b = a++;
printf("a = %d, b = %d\n", a, b);
a = 5;
b = (a += 1);
printf("a = %d, b = %d\n", a, b);
return 0;
}
输出:
text
a = 6, b = 5
a = 6, b = 6
a++ 返回原值,a += 1 返回新值。
六、常见错误 #
6.1 混淆 = 和 == #
c
if (a = 5) {
}
if (a == 5) {
}
6.2 连续赋值类型问题 #
c
int a;
float b;
a = b = 3.14;
printf("a = %d, b = %f\n", a, b);
输出:
text
a = 3, b = 3.140000
6.3 赋值给常量 #
c
const int a = 10;
a = 20;
编译错误。
七、总结 #
赋值运算符 #
| 运算符 | 说明 |
|---|---|
| = | 基本赋值 |
| += | 加后赋值 |
| -= | 减后赋值 |
| *= | 乘后赋值 |
| /= | 除后赋值 |
| %= | 取余后赋值 |
| &= | 按位与后赋值 |
| |= | 按位或后赋值 |
| ^= | 按位异或后赋值 |
| <<= | 左移后赋值 |
| >>= | 右移后赋值 |
注意事项 #
- 区分
=和== - 注意连续赋值的类型转换
- const变量必须初始化
下一步,让我们学习运算符优先级!
最后更新:2026-03-26