2. 赋值运算符
赋值运算符 是构成赋值表达式的基本运算符。
什么是赋值表达式
赋值表达式 是用来修改变量(或其它数据)的值的一个表达式。通常在赋值表达式的末尾加一个分号(;) 形成一个可单独执行的表达式语句。
赋值运算符有如下几种:
= *= /= %= += -= <<= >>= &= ^= |=
赋值表达式的语法
左操作数 赋值运算符 表达式
说明:
- 左操作数 通常是变量、 数组索引或指针解引用等(后面会讲)。
- 赋值表达式是先右后左的结合性,即右侧优先运算,将表达式运行完毕后的最终结果赋值给左操作数。
例如1
int x;
x = 100 + 200;
上述代码中 x = 100 + 200 是赋值表达式,最终变量 x 的值被改为 300。
例如2
int x;
int y;
y = x = 100 + 200;
上述代码中 x = 100 + 200 先计算,变量 x 的值被改为 300,然后表达式 x = 100 + 200 的返回值就是 x 的值 300,再使用赋值表达式赋值给 y ,最终变量 y 的值也是 300。
问题:
现在有一个变量 x 此时它的值是未知的。我现在要在它原有的值的基础上增加 5 我该怎么办呢?起始我们可以这样写代码如下:
x = x + 5;
右表达式 x + 5 先算出值后再赋值给 x,此时 x 的值就被修改为原来的值加上 5 了。当然上述赋值表达式可以写成如下形式:
x += 5; // 等同于 x = x + 5;
赋值表达式的其它 运算符列举如下:
左操作数 += 表达式 // 等同于: 左操作数 = 左操作数 + 表达式
左操作数 -= 表达式 // 等同于: 左操作数 = 左操作数 - 表达式
左操作数 *= 表达式 // 等同于: 左操作数 = 左操作数 * 表达式
左操作数 /= 表达式 // 等同于: 左操作数 = 左操作数 / 表达式
左操作数 %= 表达式 // 等同于: 左操作数 = 左操作数 % 表达式
// 以下是位运算相关的运算符(后续小节内容学完才会理解)。
左操作数 &= 表达式 // 等同于: 左操作数 = 左操作数 & 表达式
左操作数 |= 表达式 // 等同于: 左操作数 = 左操作数 | 表达式
左操作数 ^= 表达式 // 等同于: 左操作数 = 左操作数 ^ 表达式
左操作数 <<= 表达式 // 等同于: 左操作数 = 左操作数 << 表达式
左操作数 >>= 表达式 // 等同于: 左操作数 = 左操作数 >> 表达式
示例
#include <stdio.h>
int main(int argc, char *argv[]) {
int x = 7,y = 2;
int result;
result = x + y; // 此时 result 值为 9
printf("result: %d\n", result);
result += 5; // 此时 result 值为 14
printf("result: %d\n", result);
return 0;
}
运行结果
result: 9
result: 14
练习:
写一个程序,输入矩形(长方形)的宽度和高度,打印矩形的面积和周长。