C/C++运算符超详细讲解(系统性学习day5)

简介: C/C++运算符超详细讲解(系统性学习day5)

前言

本篇文章是对运算符的具体讲解。


一、运算符的概念与分类

概念:

运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。在计算机编程中,运算符用于操作数据,执行各种数学和逻辑运算,并产生结果。

分类:

1.根据分类对象的多少可以分为单目运算符(又名一元运算符)、双目操作符(又名二元操作符)、三目操作符(又名三元操作符)。

2.根据运算作用不同又可以分为:算术操作符、关系操作符、逻辑操作符、位运算符、赋值运算符、杂项操作符等。

二、算术运算符

含义:

算术运算符是对数值类型变量进行运算的,属于上述的双目操作符,结合性是从左到右的,算术优先级就是我们所知的 “ * 、/ 、% ”>“ +、 -”

(实例中的变量x为20,变量y为10)

运算符 描述 实例
+ 把两个操作数相加 x+y得到15
第一个操作数减去第二个操作数 x-y得到5
* 把两个操作数相乘  x*y得到50
把两个操作数相除 x/y得到2
% 取模,结果为整除后的余数 x%y得到0
++ 自增运算符,整数值加一 x++得到11
-- 自减运算符,整数值减一 x--得到9

需要注意的是:

a++(a--) 与 ++a(--a)的区别,前者为赋值运算,后者为运算赋值。当其作为一个独立的语言使用时,是等价的。但是当它出现在语句中就会有所不同。

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>
 
int main()
{
   int y;
   int x = 10;
   y = x++; 
   printf("先赋值后运算:\n");
   printf("y 的值是 %d\n", y );
   printf("x 的值是 %d\n", x );
   x = 10;
   y = x--; 
   printf("y 的值是 %d\n", y );
   printf("x 的值是 %d\n", x );
 
   printf("先运算后赋值:\n");
   x = 10;
   y = ++x; 
   printf("y 的值是 %d\n", y );
   printf("x 的值是 %d\n", x );
   a = 10;
   c = --a; 
   printf("y 的值是 %d\n", y );
   printf("x 的值是 %d\n", x );
 
    return 0;
}

程序运行的结果如下:

       

     

     

     

   

     

     

       

三、关系运算符

含义:

关系运算符的值只能是0或1。当运算符的值为真时,结果值都为1;反之,都为0;关系运算符也属于双目运算符,结合性为从左到右,优先级为“ > 、 < 、 >= 、 <=  ”  >  " == 、 !=  "

(假设实例中的变量x的值为20,变量y的值为10)

运算符  描述 实例
== 检查俩个操作数的值是否相等,如果相等则为真  x==y为假
!= 检查俩个操作数的值是否相等,如果不相等则为真 x!=y为真
检查左操作数是否大于右操作数,如果符合则为真  x>y为真
检查左操作数是否小于右操作数,如果符合则为真 x<y为假
>=   检查左操作数是否大于等于右操作数,如果符合则为真 x>=y为真
<= 检查左操作数是否小于等于右操作数,如果符合则为真 x<=y为假

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>
 
int main()
{
   int x = 20;
   int y = 10;
   int c ;
 
   if( x == y )
   {
      printf("x 等于 y\n" );
   }
   else
   {
      printf("x 不等于 y\n" );
   }
   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 t;
   t = x;
   x = y;
   y = t;
   if ( x <= y )
   {
      printf("x 小于或等于 y\n" );
   }
   if ( y >= x )
   {
      printf("y 大于或等于 x\n" );
   }
 
   return 0;
   }

  程序运行的结果如下:

   

   

四、逻辑运算符

含义:

用于连接多个条件的运算符,结果也是为真(1)或假(0),结合性为从右到左

(假设实例中的变量x的值为0,变量y的值为1)

运算符  描述 实例
&& 称之为逻辑与运算符,当且仅当俩个操作数都不为零时,条件为真。 A&&B为假
|| 称之为逻辑或运算符,当俩个操作数存在人一个非零时,条件为真。 A||B为真
称之为逻辑非运算符,用来逆转操作数的逻辑状态。将真变为假,假变为真。 !(A&&B)为真

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>
 
int main()
{
   int x = 20;
   int y = 10;
 
   if ( x && y )
   {
      printf("条件1为真\n" );
   }
   if ( x || y )
   {
      printf("条件2为真\n" );
   }
 
   x = 0;
   y = 10;
   if ( x && y )
   {
      printf("条件3为真\n" );
   }
   else
   {
      printf("条件3为假\n" );
   }
   if ( !(x && y) )
   {
      printf("条件4为真\n" );
   }
 
   return 0;
}
 
 

程序运行的结果如下:

     

       

             

五、赋值运算符

含义:

赋值运算符就是将某个值赋给某个指定的变量,结合性为从右到左

运算符  描述 实例
简单的赋值运算符,把右边的操作数赋给左边操作数     C=A+B将把A+B的值赋给C
+= 加且赋值运算符,把左边操作数加上右边操作数的结果赋值给左面的操作数  C+=A相当于C=C+A
-=   减且赋值运算符,把左面的操作数减右面操作数的结果赋值给左面的操作数 C-=A相当于C=C-A
*= 乘且赋值运算符,把左面的操作数乘以右边的结果赋值给左面的操作数 C*=A相当于C=C*A
/= 除且赋值操作符,把左面的操作数除以右面的操作数的结果赋值给左面的操作数 C/=A相当于C=C/A
%= 求模且赋值运算符,求两个操作数的模赋值给左边的操作数 C%=A相当于C=C%A
<<=   左移且赋值运算符 C<<=2等同于C=C<<2
>>= 右移且赋值运算符 C>>=2等同于C=C>>2
&= 按位与且赋值运算符 C&=2等同于C=C&2
^= 按位异或且赋值运算符 C^=2等同于C=C^2
|= 按位或且赋值运算符 C|=2等同于C=C|2

下面通过一个实例代码来帮助大家更好的理解:      

#include <stdio.h>
 
int main()
{
   int a = 21;
   int c ;
 
   c =  a;
   printf(" = 的运算符实例,c 的值 = %d\n", c );
 
   c +=  a;
   printf("+= 的运算符实例,c 的值 = %d\n", c );
 
   c -=  a;
   printf("-= 的运算符实例,c 的值 = %d\n", c );
 
   c *=  a;
   printf("*= 的运算符实例,c 的值 = %d\n", c );
 
   c /=  a;
   printf("/= 的运算符实例,c 的值 = %d\n", c );
 
 
   c <<=  2;
   printf("<<= 的运算符实例,c 的值 = %d\n", c );
 
   c >>=  2;
   printf(">>= 的运算符实例,c 的值 = %d\n", c );
 
   c &=  2;
   printf("&= 的运算符实例,c 的值 = %d\n", c );
 
   c ^=  2;
   printf("^= 的运算符实例,c 的值 = %d\n", c );
 
   c |=  2;
   printf("|= 的运算符实例,c 的值 = %d\n", c );
 
  return 0;
}

  程序运行的结果如下:

       

六、运算符的优先级

含义:

运算符的优先级往往会影响一个表达式的运算的结果,比如最常见的就是乘除运算的优先级大于加减运算。

类型 运算符 结合性
乘除  *   /   % 从左到右
加减  +  - 从左到右
后缀 () [] ++ --  从左到右
一元 +  -  ! ~ ++ --(type)* & sizeof 从右到左
移位  <<  >> 从左到右
关系 <<= >>= 从左到右
相等与不等 ==   != 从左到右
位与AND & 从左到右
位异或XOR     ^ 从左到右
位或OR  | 从左到右
逻辑与AND && 从左到右
逻辑或OR || 从左到右
条件 ?: 从右到左
赋值  =  +=   -=   *=   /=    %=    >>=   <<=   &=  ^= |= 从右到左
逗号 , 从左到右

 



总结

       本篇文章详细地讲了C语言的运算符,希望能够帮到大家!

      以后还会给大家展现更多关于C语言的其他重要的基础知识,感谢大家支持懒大王!

相关文章
|
5天前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
24 4
2023/11/10学习记录-C/C++对称分组加密DES
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
90 0
|
2月前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
2月前
|
Java 编译器 C++
c++学习,和友元函数
本文讨论了C++中的友元函数、继承规则、运算符重载以及内存管理的重要性,并提到了指针在C++中的强大功能和使用时需要注意的问题。
27 1
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
56 3
|
3月前
|
C++
【C++基础】运算符详解
这篇文章详细解释了C++中运算符的用法,包括算术运算符、赋值运算符、比较运算符和逻辑运算符,以及它们在表达式中的作用和示例。
47 2
|
4月前
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
69 1
|
4月前
|
C++
c++学习笔记02 运算符
C++学习笔记,介绍了C++中的运算符,包括基本的加减乘除、求模、前后置递增递减、赋值运算符、比较运算符和逻辑运算符的使用及其注意事项。
44 6
|
4月前
|
存储 算法 数据可视化
【C++】C++旅游管理系统(源码+论文)【独一无二】
【C++】C++旅游管理系统(源码+论文)【独一无二】
|
4月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
38 0