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 - Main 函数 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 - 指针 vs 数组 C - 字符指针和函数 C - NULL 指针 C - void 指针 C - 悬垂指针 C - 解引用指针 C - Near、Far 和 Huge 指针 C - 指针数组的初始化 C - 指针与多维数组

C 语言中的字符串

C - 字符串 C - 字符串数组 C - 特殊字符

C 语言的结构体和联合

C - 结构体 C - 结构体和函数 C - 结构体数组 C - 自引用结构 C - 查找表 C - 点 (.) 运算符 C - 枚举(或 enum) C - 结构填充和打包 C - 嵌套结构 C - 匿名结构和联合 C - 联合 C - Bit 位字段 C - Typedef

C 语言中的文件处理

C - 输入和输出 C - 文件 I/O(文件处理)

C 语言中的预处理器

C - 预处理器 C - #pragma 编译指示 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; // 声明并初始化
int y; // 声明
y = 20; // 稍后赋值
int z = x + y; // 赋值一个表达式
int d = 3, f = 5; // 定义并初始化 d 和 f。
char x = 'x'; // 变量 x 的值为 'x'。

一旦声明了特定类型的变量,就不能再赋值给任何其他类型的值。在这种情况下,C 编译器会报告类型不匹配错误。

在 C 语言中,引用内存位置的表达式称为"左值"表达式。左值可以出现在赋值语句的左侧,也可以出现在右侧。

另一方面,"右值"指的是存储在内存中某个地址的数据值。右值是一个不能被赋值的表达式,这意味着右值可以出现在赋值语句的右侧,但不能出现在左侧。

变量是左值,因此它们可以出现在赋值语句的左侧。数值字面量是右值,因此它们不能被赋值,也不能出现在左侧。请看以下有效和无效语句 -

int g = 20; // 有效语句
10 = 20; 	// 无效语句

增强赋值运算符

除了 = 运算符之外,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
", c );

   c +=  a;
   printf("Line 2 - += Operator Example, Value of c = %d
", c );

   c -=  a;
   printf("Line 3 - -= Operator Example, Value of c = %d
", c );

   c *=  a;
   printf("Line 4 - *= Operator Example, Value of c = %d
", c );

   c /=  a;
   printf("Line 5 - /= Operator Example, Value of c = %d
", c );

   c  = 200;
   c %=  a;
   printf("Line 6 - %%= Operator Example, Value of c = %d
", c );

   c <<=  2;
   printf("Line 7 - <<= Operator Example, Value of c = %d
", c );

   c >>=  2;
   printf("Line 8 - >>= Operator Example, Value of c = %d
", c );

   c &=  2;
   printf("Line 9 - &= Operator Example, Value of c = %d
", c );

   c ^=  2;
   printf("Line 10 - ^= Operator Example, Value of c = %d
", c );

   c |=  2;
   printf("Line 11 - |= Operator Example, Value of c = %d
", 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.html