C 运算符

C语言运算符知识大全 – 编程小白入门指南

C语言运算符知识大全

编程小白入门指南 – 通俗易懂的运算符详解

C语言中的运算符就像数学中的加减乘除符号,但功能更强大、种类更多样。它们可以对数据进行各种操作和计算,是编程的基础元素。

本指南用通俗易懂的语言详细解释C语言的各类运算符,包括它们的作用、使用方法和注意事项。每个知识点都配有代码示例,帮助你快速理解。

一、算术运算符

算术运算符用于基本的数学运算,如加减乘除。

1. 加法运算符
+

作用:将两个值相加

示例:

int sum = 5 + 3; // 结果为8
2. 减法运算符

作用:将两个值相减

示例:

int difference = 10 – 4; // 结果为6
3. 乘法运算符
*

作用:将两个值相乘

示例:

int product = 6 * 7; // 结果为42
4. 除法运算符
/

作用:将两个值相除得到商

注意:整数相除会丢弃小数部分

示例:

int quotient = 10 / 3; // 结果为3(不是3.333) float result = 10.0 / 3; // 结果为3.333
5. 取模运算符
%

作用:计算两个整数相除的余数

注意:只能用于整数,不能用于浮点数

示例:

int remainder = 10 % 3; // 结果为1(10 ÷ 3 = 3 余1)
算术运算符使用提示:

• 除法运算符作用于整数时结果是整数,作用于浮点数时结果是浮点数

• 运算符两边类型不同时,会自动进行类型转换

• 小心除数为0的情况,会导致运行时错误

二、关系运算符

关系运算符用于比较两个值的大小关系,结果为真(1)或假(0)。

1. 等于运算符
==

作用:检查两个值是否相等

注意:不要和赋值运算符(=)混淆

示例:

(5 == 5) // 结果为1(真)
(5 == 3) // 结果为0(假)
2. 不等于运算符
!=

作用:检查两个值是否不相等

示例:

(5 != 3) // 结果为1(真)
(5 != 5) // 结果为0(假)
3. 大于运算符
>

作用:检查左边值是否大于右边值

示例:

(10 > 5) // 结果为1
(5 > 10) // 结果为0
4. 小于运算符
<

作用:检查左边值是否小于右边值

示例:

(3 < 8) // 结果为1
(8 < 3) // 结果为0
5. 大于等于运算符
>=

作用:检查左边值是否大于或等于右边值

示例:

(10 >= 10) // 结果为1
(10 >= 15) // 结果为0
6. 小于等于运算符
<=

作用:检查左边值是否小于或等于右边值

示例:

(5 <= 5) // 结果为1
(5 <= 3) // 结果为0
关系运算符使用提示:

• 关系运算的结果是整数类型:1表示真,0表示假

• 比较浮点数时要小心精度问题(如0.1 + 0.2 != 0.3)

• 注意运算符的优先级,必要时使用括号

三、逻辑运算符

逻辑运算符用于组合多个条件,常用于条件判断。

1. 逻辑与运算符
&&

作用:当两个条件都为真时结果才为真(一假则假)

示例:

(5 > 3) && (10 < 20) // 结果1(真)
(5 > 3) && (10 > 20) // 结果0(假)
2. 逻辑或运算符
||

作用:两个条件中有一个为真结果就为真(一真则真)

示例:

(5 > 10) || (8 < 10) // 结果1(真)
(5 > 10) || (8 > 10) // 结果0(假)
3. 逻辑非运算符
!

作用:取反操作,把真变假,假变真

示例:

!(5 == 5) // 结果0(假)
!(5 == 3) // 结果1(真)
逻辑运算符使用提示:

• 逻辑运算符有短路特性:&&左边为假时右边不执行,||左边为真时右边不执行

• 不要把逻辑运算符(&、|)和位运算符(&、|)混淆

• 非0值在逻辑运算中都视为真,0值视为假

四、赋值运算符

赋值运算符用于给变量赋值,可以将赋值和运算结合起来。

1. 基本赋值运算符
=

作用:将右边的值赋给左边变量

示例:

int a = 5; // 给a赋值为5
2. 复合赋值运算符

作用:将运算和赋值结合,简化表达式

说明:

a += b; // 等价于 a = a + b
a -= b; // 等价于 a = a – b
a *= b; // 等价于 a = a * b
a /= b; // 等价于 a = a / b
a %= b; // 等价于 a = a % b

示例:

int a = 10;
a += 5; // a变为15
a *= 2; // a变为30
赋值运算符使用提示:

• 赋值运算符左边必须是一个变量(左值)

• 多个赋值可以连写:a = b = c = 5;(所有变量值为5)

• 复合赋值运算符效率通常比分开写高

五、自增自减运算符

自增自减运算符用于快速增加或减少变量的值。

1. 自增运算符
++

作用:将变量的值增加1

两种形式:

前缀形式:++a(先增加再使用)

后缀形式:a++(先使用再增加)

示例:

int a = 5;
int b = ++a; // a先变为6,然后b=6

int c = 5;
int d = c++; // d=5,然后c变为6
2. 自减运算符

作用:将变量的值减少1

两种形式:

前缀形式:–a(先减少再使用)

后缀形式:a–(先使用再减少)

示例:

int a = 5;
int b = –a; // a先变为4,然后b=4

int c = 5;
int d = c–; // d=5,然后c变为4
自增自减使用提示:

• 注意前缀和后缀的区别,尤其在复杂表达式中

• 避免在同一个表达式中多次修改同一个变量(如 a = a++ + ++a)

• 自增自减只能用于变量,不能用于常量或表达式

六、条件运算符

条件运算符是C语言中唯一的三目运算符,用于简单的条件判断。

条件运算符
? :

语法:条件 ? 表达式1 : 表达式2

作用:如果条件为真,结果为表达式1的值;否则为表达式2的值

示例:

int a = 10, b = 20;
int max = (a > b) ? a : b; // 如果a>b,max=a,否则max=b
// 这里max=20

// 相当于:
if (a > b) {
  max = a;
} else {
  max = b;
}
条件运算符使用提示:

• 适用于简单的条件赋值,复杂的逻辑建议使用if-else

• 表达式1和表达式2的类型应该兼容

• 可以嵌套使用,但不要过度嵌套使代码难懂

七、运算符优先级与结合性

当表达式中有多个运算符时,按照优先级和结合性决定运算顺序。

常见运算符优先级表

优先级 运算符 描述 结合性
1 () [] . -> 括号、数组下标、成员访问 从左到右
2 ! ~ ++ — + – * & (类型) 逻辑非、位取反、自增减、正负号、指针、类型转换 从右到左
3 * / % 乘、除、取模 从左到右
4 + – 加、减 从左到右
5 << >> 位左移、位右移 从左到右
6 < <= > >= 关系运算符 从左到右
7 == != 相等性运算符 从左到右
8 & 位与 从左到右
9 ^ 位异或 从左到右
10 | 位或 从左到右
11 && 逻辑与 从左到右
12 || 逻辑或 从左到右
13 ? : 条件运算符 从右到左
14 = += -= *= /= %= etc. 赋值运算符 从右到左
15 , 逗号运算符 从左到右
优先级与结合性使用提示:

• 优先级高的运算符先执行,同级运算符按结合性顺序执行

• 使用括号可以明确指定运算顺序,使代码更清晰

• 如果不确定优先级,使用括号是最安全的选择

• 自增自减在表达式中使用需特别注意顺序

// 优先级示例:
int a = 5 + 3 * 2; // 先乘后加,结果11
int b = (5 + 3) * 2; // 括号改变顺序,结果16

// 结合性示例:
int c = 15 / 3 * 2; // 除法左结合:(15/3)*2=10
int d = a = b = 10; // 赋值右结合:b=10, a=b, d=a

八、其他运算符

1. 逗号运算符
,

作用:连接多个表达式,整个表达式的值是最右边表达式的值

示例:

int a = (5, 10, 15); // a=15

for (i = 0, j = 10; i < j; i++, j--) {
  // 循环体
}
2. sizeof运算符
sizeof()

作用:计算数据类型或变量所占字节数

示例:

int size = sizeof(int); // 通常是4(取决于系统)
double d;
int d_size = sizeof(d); // 通常是8
int arr[10];
int arr_size = sizeof(arr); // 10 * sizeof(int)
3. 取地址运算符
&

作用:获取变量的内存地址

示例:

int num = 10;
int *ptr = # // ptr指向num的地址
4. 指针运算符
int value = 5;
int *ptr = &value; // ptr是指向整数的指针
int num = *ptr; // 获取ptr指向的值(5)

本指南涵盖了C语言所有主要运算符知识点,帮助编程小白快速入门

建议结合实践练习加深理解,祝您编程学习顺利!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部