c语言操作符(详细讲解)

news/2025/2/2 22:25:53 标签: c语言

目录

前言

一、算术操作符

一元操作符:

二元操作符:

二、赋值操作符

代码例子:

三、比较操作符

相等与不相等比较操作符:

大于和小于比较操作符:

大于等于和小于等于比较操作符:

四、逻辑操作符

逻辑与(&&)

逻辑或(||)

逻辑非(!)

代码:

五、位操作符

按位与(&): 将两个数的对应位都为1时,结果为1,否则为0。

按位或(|): 将两个数的对应位至少有一个为1时,结果为1,否则为0。

按位异或(^): 将两个数的对应位不相同时,结果为1,否则为0。

按位取反(~): 将一个数的所有位取反,即0变为1,1变为0。

代码示例:

六、其他操作符

条件操作符(? :)

逗号操作符(,)

sizeof 操作符

指针操作符(* 和 &)

强制类型转换操作符((类型))

成员选择操作符(. 和 ->)

下标操作符([])

七、运算符优先级

总结


前言

本文主要讲解了c语言操作符方面的内容


一、算术操作符

一元操作符:

正号(+):

表示正数,不改变数值。 负号(-):表示负数,改变数值的符号。

二元操作符:

加法(+):将两个数相加。

减法(-):将第二个数从第一个数中减去。

乘法(*):将两个数相乘。

除法(/):将第一个数除以第二个数。

模运算(%): 取余运算,返回除法的余数。

自增(++)和自减(--)运算: 自增运算将操作数的值增加1,自减运算将操作数的值减少1。可以用于前缀和后缀运算符,分别表示在运算前和运算后进行增加或减少操作。例如,++x表示先将x增加1,然后使用增加后的值进行运算,而x++表示先使用x的值进行运算,然后增加1。

二、赋值操作符

  • C语言中的赋值操作符有简单赋值操作符和复合赋值操作符。

  • 简单赋值操作符(=): 简单赋值操作符用于将右边表达式的值赋给左边的变量。 例如:int x = 5; 将整数值5赋给变量x。

  • 复合赋值操作符: 复合赋值操作符将算术运算符和赋值操作符结合在一起,可以简化代码。

    • += 用于将右边表达式的值加到左边变量的值上,然后将结果赋给左边变量。 例如:x += 5; 相当于 x = x + 5;
    • -= 用于将右边表达式的值从左边变量的值中减去,然后将结果赋给左边变量。 例如:x -= 5; 相当于 x = x - 5;
    • *= 用于将右边表达式的值乘以左边变量的值,然后将结果赋给左边变量。 例如:x *= 5; 相当于 x = x * 5;
    • /= 用于将左边变量的值除以右边表达式的值,然后将结果赋给左边变量。 例如:x /= 5; 相当于 x = x / 5;
    • %= 用于将左边变量的值取模(求余数)右边表达式的值,然后将结果赋给左边变量。 例如:x %= 5; 相当于 x = x %5
    • 代码例子:

#include <stdio.h>

int main() {
   int x = 10;
   
   printf("初始值 x = %d\n", x);
   
   x += 5;
   printf("x += 5 后的值 x = %d\n", x);
   
   x -= 3;
   printf("x -= 3 后的值 x = %d\n", x);
   
   x *= 2;
   printf("x *= 2 后的值 x = %d\n", x);
   
   x /= 4;
   printf("x /= 4 后的值 x = %d\n", x);
   
   x %= 3;
   printf("x %%= 3 后的值 x = %d\n", x);
   
   return 0;
}
 

    初始值 x = 10
    x += 5 后的值 x = 15
    x -= 3 后的值 x = 12
    x *= 2 后的值 x = 24
    x /= 4 后的值 x = 6
    x %= 3 后的值 x = 0
     
    

    三、比较操作符

    • 比较操作符可以结合if,else if等判断语句达到你想要达到的效果

    • 相等与不相等比较操作符:

    • int a = 5;
      int b = 10;
      
      if (a == b) {
          printf("a 等于 b\n");
      } else {
          printf("a 不等于 b\n");
      }
      
      if (a != b) {
          printf("a 不等于 b\n");
      } else {
          printf("a 等于 b\n");
      }
      

    • 大于和小于比较操作符:

    • int x = 15;
      int y = 20;
      
      if (x > y) {
          printf("x 大于 y\n");
      } else {
          printf("x 小于等于 y\n");
      }
      
      if (x < y) {
          printf("x 小于 y\n");
      } else {
          printf("x 大于等于 y\n");
      }
      

    • 大于等于和小于等于比较操作符:

    • int p = 25;
      int q = 25;
      
      if (p >= q) {
          printf("p 大于等于 q\n");
      } else {
          printf("p 小于 q\n");
      }
      
      if (p <= q) {
          printf("p 小于等于 q\n");
      } else {
          printf("p 大于 q\n");
      }
      

            以上示例代码演示了C语言中比较操作符的使用方法和输出结果。请注意,比较操作符返回的结果是一个布尔值,即真(非零)或假(零),用于条件语句的判断。

    四、逻辑操作符

           逻辑操作符可以结合if,else if等判断语句达到你想要达到的效果

    • 逻辑与(&&)
    • 用于判断两个条件是否同时成立。在第一个if语句中,我们判断a是否大于0并且b是否大于0,如果两个条件都成立,则输出"Both a and b are greater than 0"。
    • 逻辑或(||)
    • 用于判断两个条件是否至少一个成立。在第二个if语句中,我们判断a是否大于0或者b是否大于0,如果至少一个条件成立,则输出"Either a or b is greater than 0"。
    • 逻辑非(!)
    • 用于取反一个条件。在第三个if语句中,我们判断a是否不大于0,如果条件不成立,则输出"a is not greater than 0"。
    • 代码:
    • #include <stdio.h>
      
      int main() {
          int a = 10;
          int b = 5;
          
          // 逻辑与(&&)
          if (a > 0 && b > 0) {
              printf("Both a and b are greater than 0\n");
          }
          
          // 逻辑或(||)
          if (a > 0 || b > 0) {
              printf("Either a or b is greater than 0\n");
          }
          
          // 逻辑非(!)
          if (!(a > 0)) {
              printf("a is not greater than 0\n");
          }
          
          return 0;
      }
       
      

    五、位操作符
    • 按位与(&): 将两个数的对应位都为1时,结果为1,否则为0。
      按位或(|): 将两个数的对应位至少有一个为1时,结果为1,否则为0。
      按位异或(^): 将两个数的对应位不相同时,结果为1,否则为0。
      按位取反(~): 将一个数的所有位取反,即0变为1,1变为0。
    • 代码示例:
    • #include <stdio.h>
      
      int main() {
          unsigned int a = 5; // 二进制表示为 0000 0101
          unsigned int b = 10; // 二进制表示为 0000 1010
          
          unsigned int result;
          
          // 按位与(&)操作
          result = a & b; // 二进制运算为 0000 0000,即 0
          printf("按位与的结果为:%u\n", result);
          
          // 按位或(|)操作
          result = a | b; // 二进制运算为 0000 1111,即 15
          printf("按位或的结果为:%u\n", result);
          
          // 按位异或(^)操作
          result = a ^ b; // 二进制运算为 0000 1111,即 15
          printf("按位异或的结果为:%u\n", result);
          
          // 按位取反(~)操作
          result = ~a; // 二进制运算为 1111 1010,即 4294967290
          printf("按位取反的结果为:%u\n", result);
          
          return 0;
      }
       
      按位与的结果为:0
      按位或的结果为:15
      按位异或的结果为:15
      按位取反的结果为:4294967290
      

      在上面的代码中,使用了unsigned int类型来存储无符号整数,以便进行位操作。根据运算规则,在进行位操作时,将对每个二进制位进行操作,得到相应的结果。
    六、其他操作符
    • 下面是c语言中其他操作符的例子:

      条件操作符(? :)
      int a = 10;
      int b = 5;
      int max = (a > b) ? a : b; // 如果 a 大于 b,max 等于 a,否则等于 b
      

      逗号操作符(,)
      int a = 1, b = 2, c = 3;
      int sum = (a + b, b + c); // 使用逗号操作符计算 b + c,得到结果 5,赋给 sum
      

      sizeof 操作符
      int arr[5];
      int size = sizeof(arr); // 获取 arr 数组的大小,结果为 20(字节)
      

      指针操作符(* 和 &)
      int num = 10;
      int *ptr = # // 定义一个指向 int 类型的指针 ptr,将变量 num 的地址赋给 ptr
      int value = *ptr; // 将 ptr 指向的地址的值赋给 value,即 value 等于 10
      

      强制类型转换操作符((类型))
      double num = 3.14;
      int integerPart = (int)num; // 将浮点数 num 强制转换为整型,结果为 3
      

      成员选择操作符(. 和 ->)
      struct Point {
         int x;
         int y;
      };
      
      struct Point p;
      p.x = 10; // 使用点操作符设置成员变量 x 的值
      p.y = 20; // 使用点操作符设置成员变量 y 的值
      
      struct Point *ptr = &p;
      ptr->x = 30; // 使用箭头操作符设置指针指向的结构体变量的成员变量 x 的值
      ptr->y = 40; // 使用箭头操作符设置指针指向的结构体变量的成员变量 y 的值
      

      下标操作符([])
    • 访问数组以及容器,字符串等下标等都会用到
    • int arr[5] = {1, 2, 3, 4, 5};
      int element = arr[2]; // 获得 arr 数组中索引为 2 的元素,结果为 3
      

             在这些代码示例中演示了条件操作符、逗号操作符、sizeof 操作符、指针操作符、强制类型转换操作符、成员选择操作符和下标操作符的用法。请注意在实际编码中根据需求灵活使用这些操作符。

    七、运算符优先级

           在编程中,运算符优先级决定了表达式中各个运算符的计算顺序。当一个表达式中存在多个运算符时,运算符优先级可以帮助程序员确定计算的先后顺序,从而得出正确的结果。以下是常见的运算符优先级,从高到低排列:

    1. 圆括号:() - 最高优先级的运算符,可以改变其他运算符的计算顺序。
    2. 一元运算符:!、~、-、+、++、-- - 这些运算符用于对单个操作数进行运算。
    3. 乘法和除法:*、/、% - 乘法、除法和取模运算符按照从左到右的顺序进行计算。
    4. 加法和减法:+、- - 加法和减法运算符按照从左到右的顺序进行计算。
    5. 关系运算符:<、<=、>、>= - 这些运算符用于比较两个数的大小,并返回一个布尔值。
    6. 相等运算符:==、!= - 用于比较两个数是否相等,并返回一个布尔值。
    7. 逻辑运算符:&&、|| - 这些运算符用于组合多个表达式,并返回一个布尔值。
    8. 赋值运算符:=、+=、-=、*=、/=、%= - 赋值运算符用于给变量赋值。
    9. 逗号运算符:, - 逗号运算符用于分隔多个表达式,并返回最后一个表达式的结果。

           当表达式中存在多个运算符时,根据优先级和结合性(从左到右或从右到左)来确定运算的先后顺序。如果不确定,可以使用圆括号来明确指定运算顺序。


    总结

     以上就是c语言操作符相关的内容啦,后续我会带来更多实用的内容,感兴趣的可以点个赞支持一下!


    http://www.niftyadmin.cn/n/5840336.html

    相关文章

    docker直接运行arm下的docker

    运行环境是树莓派A 处理器是 arm32v6 安装了docker&#xff0c;运行lamp 编译安装php的时候发现要按天来算&#xff0c;于是用电脑vm下的Ubuntu系统运行arm的docker 然后打包到a直接导入运行就可以了 第一种方法 sudo apt install qemu-user-static 导入直接运行就可以了…

    实践Rust:编写一个猜数字游戏

    如果你正在学习Rust&#xff0c;并且想通过一个有趣的小项目来巩固所学知识&#xff0c;那么“猜数字游戏”是一个绝佳的选择&#xff01;这个游戏的逻辑非常简单&#xff1a;程序会随机生成一个数字&#xff0c;玩家需要猜测这个数字是多少&#xff0c;程序会告诉玩家猜大了还…

    【SSH】如何通过 SSH 跳板实现免密码登录(跨平台通用)

    1. 前言 在实际开发或运维中&#xff0c;面对复杂网络环境&#xff0c;我们常常需要通过跳板机&#xff08;Jump Host&#xff09;连接到目标服务器。为了提高操作效率&#xff0c;SSH 免密码登录是一种高效且安全的选择。本文将从基础概念到实际操作&#xff0c;详细介绍如何…

    【SQL】SQL注入知识总结

    介绍 SQL是操作数据库数据的结构化查询语言&#xff0c;网页的应用数据和后台数据库中的数据进行交互时会采用SQL。SQL注入是将Web页面的原URL、表单域或数据包输入的参数&#xff0c;修改拼接成SQL语句&#xff0c;传递给Web服务器&#xff0c;进而传给数据库服务器以执行数据…

    记4(可训练对象+自动求导机制+波士顿房价回归预测

    目录 1、TensorFlow提供自动求导机制2、自动求导机制&#xff1a;2.1、GradientTape&#xff1a;&#xff08;是一个上下文管理器对象&#xff09;2.2、 watch_accessed_variables、tape.wahtch&#xff1a;监视可训练变量2.3、二阶导数&#xff1a;两次GradientTape2.4、对向量…

    C语言------指针从入门到精通

    第一部分: 前言: 本篇文章主要划分为两大部分: 第一部分适合零基础的同学,主要学习了解指针的概念&#xff0c;对指针大概有个概念。如果你已经有基础,即可跳过第一部分的内容。 第二部分主要是分解指针的实现逻辑,通过19个例子,再结合代码公式把不同类型的指针及指针的应用详细…

    Web3技术详解

    Web3技术代表着互联网技术的最新进展&#xff0c;它致力于打造一个去中心化的互联网生态系统。以下是对Web3技术的详细解析&#xff1a; 一、Web3技术的核心概念 Web3是第三代互联网技术的代名词&#xff0c;代表着去中心化、区块链驱动和用户自有控制的理念。在Web3的世界中…

    使用pandas的read_excel()报错:

    ImportError: Unable to import required dependencies: numpy: Error importing numpy: you should not try to import numpy from its source directory; please exit the numpy source tree, and relaunch your python interpreter from there. 问题原因&a…