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