第二章——C程序设计的初步知识 第七节——赋值表达式的求值规则

第二章——C程序设计的初步知识 第七节——赋值表达式的求值规则

亓翎_Re-Tikara Lv5

赋值运算

  赋值符号“=”就是赋值运算符,它的作用是将一个表达式
的值赋给一个变量。赋值运算符的一般形式为:

1
2
3
4
变量名 = 表达式
a = 3;
b = a + 5;
c = sum(a, b);

  如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量.


几点说明

  1. 赋值运算符的优先级只高于逗号运算符,比其它的运算符优先级都低,且具有自右向左的结合性。
  2. 赋值运算符不是数学中的“等于号”,而是进行“赋予”操作。
  3. 表达式x=y读作“将y的值赋给变量x”而不读作”x等于y“
  4. 赋值运算符左边只能是变量,不能是常量或是表达式。如a+b=c就是错误的。
  5. 赋值运算符右边也可以是赋值表达式。如a=b=7+1,而a=7+1=b则是错误的。
  6. “=”视作运算符,a=19是一个表达式,C语言规定最左边变量中所得到的新值就是赋值表达式的值。

复合赋值表达式

  复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。一般格式为:
.png
  此表达式等价于:变量 = 变量 双目运算符(表达式)
  当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能
出错。

  例如:

1
2
3
4
a += 5; // 等价于 a = a + 5;
a -= 5; // 等价于 a = a - 5;
y *= x + 6; // 等价于 y = y * (x + 6);

说明

  1. 结合方向:赋值运算符的结合方向是自右向左
  2. 左侧必须是变量,不能是常量或者表达式
  3. 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。
  4. 赋值表达式的值与变量值相等,且可嵌套,例如:
1
2
3
4
5
6
a=b=c=5  //表达式值为5,a,b,c值为5
a=(b=5) //b=5;a=5
a=5+(c=6) //表达式值11,c=6,a=11
a=(b=4)+(c=6) //表达式值10,a=10,b=4,c=6
a=(b=10)/(c=2) //表达式值5,a=5,b=10,c=2


赋值运算中的类型转换

   在C语言的赋值表达式中,赋值号右边的值先转换成与左边的变量相同的类型,然后进行赋值。

注意

  1. 当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数据低位上的两个字节的数据,高位上的数据将丢失。也就是说,右边的值不能超过短整型的数值范围。即长整型假设4字节,共有32位,短整型假设2字节,共16位,那么短整型只接受32位的后一半,低16位上的数据,高16位直接丢失。
  2. 当赋值号左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数据的范围不应超出左边变量可以接受的数据范围。同时要注意,这时负数将转换为正数。
  3. 当赋值号左边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上,这时,若符号位为1,将按负数处理。
  • 标题: 第二章——C程序设计的初步知识 第七节——赋值表达式的求值规则
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-07 02:26:19
  • 链接: https://re-tikara.fun/Blog/posts/d316f5f1/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
第二章——C程序设计的初步知识 第七节——赋值表达式的求值规则