Administrator
Administrator
发布于 2024-09-05 / 4 阅读
0
0

第4章:运算符与表达式

4.1 算术运算符

用于执行基本的数学运算:

  • 加法(+a + b
  • 减法(-a - b
  • 乘法(*a * b
  • 除法(/a / b(整数除法会舍去小数部分)
  • 取余(%a % b(计算a除以b的余数)

示例:

#include <stdio.h>

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

4.2 关系运算符

用于比较两个值:

  • 等于(==a == b
  • 不等于(!=a != b
  • 大于(>a > b
  • 小于(<a < b
  • 大于等于(>=a >= b
  • 小于等于(<=a <= b

示例:

#include <stdio.h>

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

4.3 逻辑运算符

用于逻辑运算:

  • 逻辑与(&&a && b(当且仅当ab都为真时结果为真)
  • 逻辑或(||a || b(当ab中至少有一个为真时结果为真)
  • 逻辑非(!!aa为假时结果为真,反之亦然)

示例:

#include <stdio.h>

int main() {
    int a = 1, b = 0;
    printf("a && b: %d\n", a && b);
    printf("a || b: %d\n", a || b);
    printf("!a: %d\n", !a);
    return 0;
}

4.4 位运算符

用于对整数的二进制位进行操作:

  • 按位与(&a & b(对每个位进行与操作)
  • 按位或(|a | b(对每个位进行或操作)
  • 按位异或(^a ^ b(对每个位进行异或操作)
  • 按位取反(~~a(对每个位进行取反操作)
  • 左移(<<a << n(将a的二进制位向左移动n位)
  • 右移(>>a >> n(将a的二进制位向右移动n位)

示例:

#include <stdio.h>

int main() {
    int a = 5, b = 3;
    printf("a & b = %d\n", a & b);
    printf("a | b = %d\n", a | b);
    printf("a ^ b = %d\n", a ^ b);
    printf("~a = %d\n", ~a);
    printf("a << 1 = %d\n", a << 1);
    printf("a >> 1 = %d\n", a >> 1);
    return 0;
}

4.5 赋值运算符

用于将值赋给变量,并可以进行计算:

  • 赋值(=a = b
  • 加赋值(+=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

示例:

#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);
    return 0;
}

4.6 运算符优先级与结合性

运算符的优先级决定了在没有括号的情况下,哪些运算会先进行。结合性决定了相同优先级的运算符的运算顺序:

  • 高优先级*/%
  • 低优先级+-
  • 赋值运算符= 的优先级低于大多数运算符

示例:

#include <stdio.h>

int main() {
    int result = 10 + 5 * 2; // 先乘法后加法
    printf("10 + 5 * 2 = %d\n", result);
    return 0;
}

练习

  1. 编写一个程序,使用不同的运算符计算两个整数的加、减、乘、除、取余结果,并输出这些结果。
  2. 试验位运算符的效果,并观察不同的操作如何影响结果。

完成这些练习后,你将更好地理解C语言中的运算符及其用法。


评论