跳到主要内容

C 语言运算符

介绍

在C语言中,运算符是用于执行各种操作的符号或关键字。它们可以用于处理变量、常量和表达式,从而实现数学计算、逻辑判断、位操作等功能。掌握C语言中的运算符是编写高效、简洁代码的基础。

本文将详细介绍C语言中的各类运算符,并通过代码示例和实际案例帮助你理解它们的用法。


算术运算符

算术运算符用于执行基本的数学运算,如加、减、乘、除等。以下是C语言中常见的算术运算符:

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(取余)a % b

代码示例

c
#include <stdio.h>

int main() {
int a = 10, b = 3;
printf("加法: %d\n", a + b); // 输出: 13
printf("减法: %d\n", a - b); // 输出: 7
printf("乘法: %d\n", a * b); // 输出: 30
printf("除法: %d\n", a / b); // 输出: 3
printf("取模: %d\n", a % b); // 输出: 1
return 0;
}
备注
  • 除法运算符 / 在整数运算中会丢弃小数部分,结果为整数。
  • 取模运算符 % 只能用于整数运算。

关系运算符

关系运算符用于比较两个值的大小关系,返回一个布尔值(1 表示真,0 表示假)。以下是常见的关系运算符:

运算符描述示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b

代码示例

c
#include <stdio.h>

int main() {
int a = 10, b = 20;
printf("a == b: %d\n", a == b); // 输出: 0
printf("a != b: %d\n", a != b); // 输出: 1
printf("a > b: %d\n", a > b); // 输出: 0
printf("a < b: %d\n", a < b); // 输出: 1
printf("a >= b: %d\n", a >= b); // 输出: 0
printf("a <= b: %d\n", a <= b); // 输出: 1
return 0;
}
提示

关系运算符常用于条件语句(如 if 语句)中,用于控制程序的执行流程。


逻辑运算符

逻辑运算符用于组合多个条件,返回一个布尔值。以下是常见的逻辑运算符:

运算符描述示例
&&逻辑与a && b
``
!逻辑非!a

代码示例

c
#include <stdio.h>

int main() {
int a = 1, b = 0;
printf("a && b: %d\n", a && b); // 输出: 0
printf("a || b: %d\n", a || b); // 输出: 1
printf("!a: %d\n", !a); // 输出: 0
printf("!b: %d\n", !b); // 输出: 1
return 0;
}
警告
  • 逻辑与 && 只有在所有条件都为真时才返回真。
  • 逻辑或 || 只要有一个条件为真就返回真。
  • 逻辑非 ! 用于反转条件的真假值。

赋值运算符

赋值运算符用于将值赋给变量。以下是常见的赋值运算符:

运算符描述示例
=简单赋值a = b
+=加后赋值a += b
-=减后赋值a -= b
*=乘后赋值a *= b
/=除后赋值a /= b
%=取模后赋值a %= b

代码示例

c
#include <stdio.h>

int main() {
int a = 10, b = 3;
a += b; // a = a + b
printf("a += b: %d\n", a); // 输出: 13
a -= b; // a = a - b
printf("a -= b: %d\n", a); // 输出: 10
a *= b; // a = a * b
printf("a *= b: %d\n", a); // 输出: 30
a /= b; // a = a / b
printf("a /= b: %d\n", a); // 输出: 10
a %= b; // a = a % b
printf("a %%= b: %d\n", a); // 输出: 1
return 0;
}
注意

赋值运算符的优先级较低,通常需要结合其他运算符使用。


位运算符

位运算符用于对二进制位进行操作。以下是常见的位运算符:

运算符描述示例
&按位与a & b
``按位或
^按位异或a ^ b
~按位取反~a
<<左移a << b
>>右移a >> b

代码示例

c
#include <stdio.h>

int main() {
int a = 5, b = 3; // 二进制: a = 0101, b = 0011
printf("a & b: %d\n", a & b); // 输出: 1 (0001)
printf("a | b: %d\n", a | b); // 输出: 7 (0111)
printf("a ^ b: %d\n", a ^ b); // 输出: 6 (0110)
printf("~a: %d\n", ~a); // 输出: -6 (补码表示)
printf("a << 1: %d\n", a << 1); // 输出: 10 (1010)
printf("a >> 1: %d\n", a >> 1); // 输出: 2 (0010)
return 0;
}
提示

位运算符常用于底层编程,如硬件操作和性能优化。


实际案例

案例:判断闰年

以下代码使用关系运算符和逻辑运算符判断某一年是否为闰年:

c
#include <stdio.h>

int main() {
int year;
printf("请输入年份: ");
scanf("%d", &year);

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 年是闰年。\n", year);
} else {
printf("%d 年不是闰年。\n", year);
}
return 0;
}

总结

C语言中的运算符是编写程序的基础工具。通过本文,你学习了算术运算符、关系运算符、逻辑运算符、赋值运算符和位运算符的使用方法,并通过实际案例加深了理解。


附加资源与练习

  1. 练习:编写一个程序,计算两个数的最大公约数(GCD)。
  2. 练习:使用位运算符实现两个数的交换,而不使用临时变量。
  3. 资源:查阅C语言官方文档,了解更多高级运算符的用法。

祝你学习愉快!