算术运算符、关系运算符与逻辑运算符
在C语言中,运算符用于执行各种操作。常用的运算符分为以下几类:
-
算术运算符:用于执行基本的数学运算,如加、减、乘、除等。
+
:加法-
:减法*
:乘法/
:除法%
:取余
-
关系运算符:用于比较两个值,返回布尔值(
true
或false
)。==
:等于!=
:不等于>
:大于<
:小于>=
:大于等于<=
:小于等于
-
逻辑运算符:用于处理布尔逻辑。
&&
:逻辑与(AND)||
:逻辑或(OR)!
:逻辑非(NOT)
以下是一个结合了这些运算符的示例代码:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int sum = a + b; // 算术运算
int isEqual = (a == b); // 关系运算
int logicalResult = (a < b) && (b > 15); // 逻辑运算
printf("Sum: %d\n", sum); // 输出加法结果
printf("Is Equal: %d\n", isEqual); // 输出关系运算结果
printf("Logical Result: %d\n", logicalResult); // 输出逻辑运算结果
return 0;
}
// 运行结果:
// Sum: 30
// Is Equal: 0
// Logical Result: 1
位运算符与位操作
位运算符用于直接操作二进制位,通常用于嵌入式系统和硬件控制。
&
:按位与|
:按位或^
:按位异或~
:按位取反<<
:左移>>
:右移
示例代码展示了如何使用这些位运算符:
#include <stdio.h>
int main() {
int x = 5; // 二进制: 0101
int y = 3; // 二进制: 0011
int andResult = x & y; // 按位与
int orResult = x | y; // 按位或
int xorResult = x ^ y; // 按位异或
int notResult = ~x; // 按位取反
int leftShiftResult = x << 1; // 左移1位
int rightShiftResult = x >> 1; // 右移1位
printf("x & y: %d\n", andResult);
printf("x | y: %d\n", orResult);
printf("x ^ y: %d\n", xorResult);
printf("~x: %d\n", notResult);
printf("x << 1: %d\n", leftShiftResult);
printf("x >> 1: %d\n", rightShiftResult);
return 0;
}
// 运行结果:
// x & y: 1
// x | y: 7
// x ^ y: 6
// ~x: -6
// x << 1: 10
// x >> 1: 2
运算符的优先级与结合性
运算符的优先级决定了在表达式中哪些运算先进行,结合性则决定了运算符的运算方向(从左到右或从右到左)。
例如,乘法和除法运算符的优先级高于加法和减法运算符,因此会先进行计算。以下是一个示例代码,展示了运算符的优先级和结合性:
#include <stdio.h>
int main() {
int a = 10, b = 5, c = 2;
int result = a + b * c; // 先乘法,再加法
printf("Result: %d\n", result); // 输出结果
result = (a + b) * c; // 使用括号改变优先级
printf("Result with parentheses: %d\n", result); // 输出结果
return 0;
}
// 运行结果:
// Result: 20
// Result with parentheses: 30
在第一个表达式中,由于乘法的优先级高,b * c
先计算,再加上a
。通过使用括号,我们可以改变计算的顺序。
复合赋值运算符与自增自减运算符
复合赋值运算符将赋值与其他运算符结合在一起,简化了代码。常见的复合赋值运算符包括:
+=
:加并赋值-=
:减并赋值*=
:乘并赋值/=
:除并赋值%=
:取余并赋值
自增和自减运算符则用于增加或减少变量的值:
++
:自增(将变量值增加1)--
:自减(将变量值减少1)
示例代码如下:
#include <stdio.h>
int main() {
int a = 10;
a += 5; // 等同于a = a + 5;
printf("a += 5: %d\n", a);
a -= 3; // 等同于a = a - 3;
printf("a -= 3: %d\n", a);
a *= 2; // 等同于a = a * 2;
printf("a *= 2: %d\n", a);
a /= 4; // 等同于a = a / 4;
printf("a /= 4: %d\n", a);
a %= 3; // 等同于a = a % 3;
printf("a %%= 3: %d\n", a);
a++; // 自增
printf("a++: %d\n", a);
a--; // 自减
printf("a--: %d\n", a);
return 0;
}
// 运行结果:
// a += 5: 15
// a -= 3: 12
// a *= 2: 24
// a /= 4: 6
// a %= 3: 0
// a++: 1
// a--: 0
总结:
在本章中,我们深入探讨了C语言中的运算符和表达式,包括算术、关系、逻辑运算符,以及位运算符和它们的应用。我们还了解了运算符的优先级和结合性,复合赋值运算符,以及自增自减运算符的使用。在实际编程中,理解这些运算符的用法和特性是编写高效且正确的代码的基础。下一章将探讨控制结构和条件语句,进一步完善你的C语言编程技能。