- C编程教程
- C语言 - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整数提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof 运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策语句
- C语言 - 决策语句
- C语言 - if 语句
- C语言 - if...else 语句
- C语言 - 嵌套 if 语句
- C语言 - switch 语句
- C语言 - 嵌套 switch 语句
- C语言中的循环语句
- C语言 - 循环语句
- C语言 - while 循环
- C语言 - for 循环
- C语言 - do...while 循环
- C语言 - 嵌套循环
- C语言 - 无限循环
- C语言 - break 语句
- C语言 - continue 语句
- C语言 - goto 语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 可变参数函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - return 语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组的区别
- C语言 - 字符指针和函数
- C语言 - 空指针
- C语言 - void 指针
- C语言 - 悬空指针
- C语言 - 解引用指针
- C语言 - 近指针、远指针和巨型指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组的区别
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言中的结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点(.)运算符
- C语言 - 枚举(enum)
- C语言 - 结构体填充和压缩
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位段
- C语言 - typedef
- C语言中的文件处理
- C语言 - 输入输出
- C语言 - 文件I/O(文件处理)
- C语言预处理器
- C语言 - 预处理器
- C语言 - 编译指示
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类别
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static 关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言中的赋值运算符
在C语言中,赋值运算符将某个值存储到已声明的变量中。C语言中的变量可以赋值字面量、另一个变量或表达式的值。
要赋值的值构成右操作数,而要赋值的变量应该是“=”符号左边的操作数,“=”符号在C语言中定义为简单的赋值运算符。
此外,C语言还有几种增强型赋值运算符。
下表列出了C语言支持的赋值运算符:
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 简单的赋值运算符。将右操作数的值赋给左操作数。 | C = A + B 将 A + B 的值赋给 C |
| += | 加法赋值运算符。它将右操作数加到左操作数上,并将结果赋给左操作数。 | C += A 等效于 C = C + A |
| -= | 减法赋值运算符。它从左操作数中减去右操作数,并将结果赋给左操作数。 | C -= A 等效于 C = C - A |
| *= | 乘法赋值运算符。它将右操作数乘以左操作数,并将结果赋给左操作数。 | C *= A 等效于 C = C * A |
| /= | 除法赋值运算符。它将左操作数除以右操作数,并将结果赋给左操作数。 | C /= A 等效于 C = C / A |
| %= | 取模赋值运算符。它使用两个操作数进行取模运算,并将结果赋给左操作数。 | C %= A 等效于 C = C % A |
| <<= | 左移赋值运算符。 | C <<= 2 等效于 C = C << 2 |
| >>= | 右移赋值运算符。 | C >>= 2 等效于 C = C >> 2 |
| &= | 按位与赋值运算符。 | C &= 2 等效于 C = C & 2 |
| ^= | 按位异或赋值运算符。 | C ^= 2 等效于 C = C ^ 2 |
| |= | 按位或赋值运算符。 | C |= 2 等效于 C = C | 2 |
简单的赋值运算符 (=)
= 运算符是 C 语言中最常用的运算符之一。根据 ANSI C 标准,所有变量都必须在开头声明。不允许在第一个处理语句之后声明变量。
您可以声明一个变量,稍后在代码中为其赋值,或者在声明时对其进行初始化。
您可以在赋值语句中使用字面量、另一个变量或表达式。
int x = 10; // declaration with initialization int y; // declaration y = 20; // assignment later int z = x + y; // assign an expression int d = 3, f = 5; // definition and initializing d and f. char x = 'x'; // the variable x has the value 'x'.
一旦声明了某种类型的变量,就不能再为其赋值其他类型的变量。在这种情况下,C 编译器会报告类型不匹配错误。
在 C 语言中,引用内存位置的表达式称为“左值”表达式。左值可以出现在赋值的左边或右边。
另一方面,术语右值指的是存储在内存某个地址中的数据值。右值是一个不能为其赋值的表达式,这意味着右值可以出现在赋值的右边,但不能出现在左边。
变量是左值,因此可以出现在赋值的左边。数字字面量是右值,因此不能赋值,也不能出现在左边。请看以下有效和无效的语句:
int g = 20; // valid statement 10 = 20; // invalid statement
增强型赋值运算符
除了=运算符之外,C语言还允许您将算术运算符和位运算符与=符号组合起来,形成增强型或复合赋值运算符。增强型运算符提供了一种方便的快捷方式,用于将算术运算或位运算与赋值结合起来。
示例 1
例如,表达式“a += b”具有相同的执行效果:先执行“a + b”,然后将结果赋值回变量“a”。
#include <stdio.h>
int main(){
int a = 10;
int b = 20;
a += b;
printf("a: %d", a);
return 0;
}
输出
运行代码并检查其输出:
a: 30
示例 2
类似地,表达式“a <<= b”具有相同的执行效果:先执行“a << b”,然后将结果赋值回变量“a”。
#include <stdio.h>
int main(){
int a = 60;
int b = 2;
a <<= b;
printf("a: %d", a);
return 0;
}
输出
运行代码并检查其输出:
a: 240
示例 3
这是一个演示C语言中赋值运算符用法的C程序:
#include <stdio.h>
int main(){
int a = 21;
int c ;
c = a;
printf("Line 1 - = Operator Example, Value of c = %d\n", c );
c += a;
printf("Line 2 - += Operator Example, Value of c = %d\n", c );
c -= a;
printf("Line 3 - -= Operator Example, Value of c = %d\n", c );
c *= a;
printf("Line 4 - *= Operator Example, Value of c = %d\n", c );
c /= a;
printf("Line 5 - /= Operator Example, Value of c = %d\n", c );
c = 200;
c %= a;
printf("Line 6 - %%= Operator Example, Value of c = %d\n", c );
c <<= 2;
printf("Line 7 - <<= Operator Example, Value of c = %d\n", c );
c >>= 2;
printf("Line 8 - >>= Operator Example, Value of c = %d\n", c );
c &= 2;
printf("Line 9 - &= Operator Example, Value of c = %d\n", c );
c ^= 2;
printf("Line 10 - ^= Operator Example, Value of c = %d\n", c );
c |= 2;
printf("Line 11 - |= Operator Example, Value of c = %d\n", c );
return 0;
}
输出
编译并执行上述程序时,将产生以下结果:
Line 1 - = Operator Example, Value of c = 21 Line 2 - += Operator Example, Value of c = 42 Line 3 - -= Operator Example, Value of c = 21 Line 4 - *= Operator Example, Value of c = 441 Line 5 - /= Operator Example, Value of c = 21 Line 6 - %= Operator Example, Value of c = 11 Line 7 - <<= Operator Example, Value of c = 44 Line 8 - >>= Operator Example, Value of c = 11 Line 9 - &= Operator Example, Value of c = 2 Line 10 - ^= Operator Example, Value of c = 0 Line 11 - |= Operator Example, Value of c = 2
c_operators.htm
广告