C语言——操作符详解

前言:这篇文章主要讲解一下C语言中常见的操作符的使用,做一下整理,便于日后回顾,同时也希望能帮助到大家。 

🎬个人简介:努力学习ing

📝CSDN主页 愚润求学

🌄每日鸡汤:念念不忘,必有回响!

一,操作符的分类

下面给出一些常用的操作符:

●   算术操作符: +    -    *    /    % 

●   位移操作符: <<     >> 

●   位操作符:    &   |   ^

●   赋值操作符:=   +=   -=   *=   /=   ···

●   单目操作符:!   ++   --   &   *   -   +   ~   sizeof(类型)  

●   关系操作符:>   >=   <   >=   ==   !=

●   逻辑操作符:&&     ||

●   条件操作符:?   : 

●   逗号表达式:,   ,   , ···

●   下标引用操作符:[ ]

●   函数调用操作符:( )

1,算术操作符

C语言中算术操作符的运算规则也就是我们日常数学里面的加,减,乘,除,取模

值得注意的是:

1,若果数据的类型都为整形(int),则:/ 运算后,只保留整数部分

2,运算中,若运算对象类型不同,会先把低等级类型的数转换为对应的高等级类型,再进行运算

2,位移操作符

了解位移操作的基础是:

1,要了解二进制

2,知道整数二进制的三种表示方法:原码,反码,补码

在已有上面的基础后,接下来介绍一下位移操作符:

1) 按位左移( << )

位移规则:

左边抛弃,右边补0(对于整型数据左移一位相当于乘以2

书写格式:

整形数据 << 左移位数

如:

5<<2  和  -5<<2

即:00000101<< 2,得  00010100(十进制的20)

        11111011 << 2,得  11101100(十进制的 -20)

 2)按位右移( >> )

位移规则:

左边用原来值的符号位填充(即负数补1,正数补0),右边抛弃

格式:

整形数据 >> 左移位数

如:

5>>2  和  -5>>2

即:00000101>> 2,得  00000001(十进制的1)

        11111011 >> 2,得  11111110(十进制的 -2)

 注意:

1,都是对整型数据二进制的补码进行位移

2,对于移动的位数不能是负数

3,位操作符

操作的对象都是整型数据的二进制的补码

1)按位与(&)

规则:

对应位,只要有0:结果就是0, 两个都是1:结果才是1

例如:

5&4相当于:

 2)按位或( | )

 规则:

对应位,只要有1:结果就是1, 两个都是0:结果才是0

 例如:

5 | 4相当于:

 3)按位异或( ^ )

规则:

对应位,相同则为0,不同则为1

例如:

5 ^ 4相当于

 4)按位取反( ~ )

 规则:

对应位,取相反的(即1变0,0变1

例如:

4,赋值操作符

理清楚:赋值操作符最后的落脚点都在赋值

=的作用就是赋值,如:

a = 2;   //意思是:把2这个值赋给a

+=    -=    *=    /=   其实逻辑是一样的,这里举两个例子:

a += 2;    等效于a = a + 2    //意思是进行a + 2的运算,把所得的值赋给a

a *=2;      等效于a = a * 2    //意思是进行 a * 2 的运算,再把所得的值赋给a

 5,单目操作符

单目操作符的特点是:只有一个操作数,且运算优先级较高

ps:因为单目操作符里面的操作对象涉及很多其他知识,所以在此先不做过多讲解

6,关系操作符

关系操作符顾名思义是用来判断两个数之间的关系的,和数学中我们所用到的大于(>),大于或等于(>=)……使用理解上没有什么太大区别

值得一提的是:

1,判断两数是否相同要用(==),因为一个=的是赋值操作符

2,!= 的意思是:“不等于”  ,如:a!=b  就是说:a的值不等于b的值

7,逻辑操作符

1)并且(&&)

(表达式1)&&(表达式2):需要&&左右两边都为真,才为真,只要有一个为假,则为假

注意短路:当第一个表达式1为假时,已经可以判断为假了,就不会再计算表达式2

2)或者(||)

(表达式1)||(表达式2):只要表达式1或者2有一个为真,就为真,只有都是假,才为假

注意短路:当第一个表达式1为真时,就可以判断为真了,就不会再计算表达式2

 8,条件操作符

格式:

表达式1 ?表达式2:表达式3

规则:

先判断表达式1,如果为真,就执行表达式2,否则执行表达式3

例如:

a>b?a:b      //如果a>b成立,就取a的值,否则取b的值

 9,逗号表达式

格式:

表达式1,表达式2,···,表达式n

规则:

从左向右结合,依次运算表达式的值,最后整个运算的结果就是表达式n运算的值

例如:

x=5+1,x*=6,x+1

先计算x=5+1得x=6,再计算6*6得36,最后再计算36+1=37,则整个表达式的值为37

 还有很多运算符由于涉及的知识比较多或者其他因素,不方便单独讲解,所以在这里不做讲解

最后附上各运算符的优先级以及结合性:

参考:C 运算符优先级 - cppreference.com


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!

嘿嘿,王子,公主请一键三连!(✪ω✪)

感谢大家的观看和支持!最后,☺祝愿大家天天开心!!!

 念念不忘,必有回响!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/166167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

黑马程序员 计算机网络(笔记)

参考文章&#xff1a;【黑马程序员】计算机网络概述~ 程序员必须掌握的入门基础知识&#xff01; 参考文章&#xff1a;黑马程序员Linux运维工作场景解决方案零基础到就业 参考文章&#xff1a;网络安全运维进阶教程&#xff0c;运维工程师深度学习教程 文章目录 linux入门到…

2023.11.17使用flask将多个图片文件上传至服务器

2023.11.17使用flask将多个图片文件上传至服务器 实现功能&#xff1a; 1、同时上传多个图片文件 2、验证文件扩展名 3、显示上传文件的文件名 4、显示文件上传结果 程序结构 main.py from flask import Flask, request, jsonify, render_template import osapp Flask(__n…

Android 10.0 系统修改usb连接电脑mtp和PTP的显示名称

1.前言 在10.0的产品定制化开发中,在usb模块otg连接电脑,调整为mtp文件传输模式的时候,这时可以在电脑看到手机的内部存储 显示在电脑的盘符中,会有一个mtp名称做盘符,所以为了统一这个名称,就需要修改这个名称,接下来分析下处理的 方法来解决这个问题 2.系统修改usb连…

[AutoSar]工程中的cpuload陷阱(三)测试

目录 关键词平台说明背景一、 测试结果对比1.1 不带cache1.2 带cache 二、小结 关键词 嵌入式、C语言、autosar 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (GCC) 背景 接着工程中的cpuload陷阱&#xff08;二)中的描述…

装饰模式 rust和java的实现

装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。 装饰器模式通过将对象包装在装饰器类中&#xff0c;以便动态地修改其行为。 这种模式创建了一个装饰类&#xff0c;用来包装原有的类&am…

(数据库管理系统)DBMS与(数据库系统)DBS的区别

数据库管理系统&#xff08;DBMS&#xff0c;Database Management System&#xff09;和数据库系统&#xff08;DBS&#xff0c;Database System&#xff09;是两个相关但不同的概念。 DBS是一个更广泛的概念&#xff0c;指的是计算机系统引入数据库后的系统&#xff0c;包括数…

翻译软件Mate Translate mac中文版介绍说明

Mate Translate mac可以帮你翻译超过100种语言的单词和短语&#xff0c;使用文本到语音转换&#xff0c;并浏览历史上已经完成的翻译。你还可以使用Control S在弹出窗口中快速交换语言。 Mate Translate Mac版软件介绍 Mate Translate 可以在你的所有设备之间轻松同步&#x…

微机原理练习题_13

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。&#xff09; 1、十六进制数5BF.C8转换成二进制数是(&#xff09; A. 11011100111111101B B. 010111011011.01101B C. 010110111111.11001B D. 010111011011.11001B 2,最适合…

Ps:变换

可以向选区、整个图层、多个图层或图层蒙版应用变换 Transform&#xff0c;还可以向路径、矢量形状、矢量蒙版、选区边界或 Alpha 通道应用变换。 若要变换栅格&#xff08;像素&#xff09;图像&#xff0c;建议先将其转换为智能对象&#xff0c;以便进行非破坏性的变换。 Ps菜…

Python编程技巧 – 使用字符串(Strings)

Python编程技巧 – 使用字符串&#xff08;Strings) Python Programming Essentials – Using Strings 本文简要介绍如何使用字符串&#xff0c;来进行Python编程。字符串有很多用途&#xff0c;包括输出结果、反馈状态、数据处理以及切片和文本筛选等 1. 字符串 字符串(St…

NSS [鹤城杯 2021]Middle magic

NSS [鹤城杯 2021]Middle magic 源码直接给了。 粗略一看&#xff0c;一共三个关卡 先看第一关&#xff1a; if(isset($_GET[aaa]) && strlen($_GET[aaa]) < 20){$aaa preg_replace(/^(.*)level(.*)$/, ${1}<!-- filtered -->${2}, $_GET[aaa]);if(preg_m…

nodejs微信小程序-实验室上机管理系统的设计与实现-安卓-python-PHP-计算机毕业设计

用户&#xff1a;管理员、教师、学生 基础功能&#xff1a;管理课表、管理机房情况、预约机房预约&#xff1b;权限不同&#xff0c;预约类型不同&#xff0c;教师可选课堂预约和个人&#xff1b;课堂预约。 目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 …

深入理解注意力机制(下)——缩放点积注意力及示例

一、介绍 在这篇文章中&#xff0c;我们将重点介绍 Transformer 背后的 Scaled Dot-Product Attention&#xff0c;并详细解释其计算逻辑和设计原理。 在文章的最后&#xff0c;我们还会提供一个Attention的使用示例&#xff0c;希望读者看完后能够对Attention有更全面的了解。…

ICASSP2023年SPGC多语言AD检测的论文总结

文章目录 引言正文AbstractRelated ArticleNo.1: CONSEN: COMPLEMENTARY AND SIMULTANEOUS ENSEMBLE FOR ALZHEIMERSDISEASE DETECTION AND MMSE SCORE PREDICTION特征相关模型结构数据处理结果分析 No.2: CROSS-LINGUAL TRANSFER LEARNING FOR ALZHEIMERS DETECTION FROM SPON…

【Flink】窗口(Window)

窗口理解 窗口&#xff08;Window&#xff09;是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中&#xff0c;再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。 对窗口的正确理解&#xff…

函数式编程框架 functionaljava 简介

文章目录 一、函数式编程起源二、functionaljava 框架简介 一、函数式编程起源 ​ 函数式编程起源于数理逻辑&#xff08;范畴论&#xff0c;Category Theory&#xff09;&#xff0c;起源于λ演算&#xff0c;这是一种演算法&#xff0c;它定义一些基础的数据结构&#xff0c…

蓝桥杯单片机综合练习——工厂灯光控制

一、题目 二、代码 #include <reg52.h>sfr AUXR 0x8e; //定义辅助寄存器sbit S5 P3^2; //定义S5按键引脚 sbit S4 P3^3; //定义S4按键引脚unsigned char led_stat 0xff; //定义LED当前状态 unsigned char count 0; //定义50ms定时中断累…

012 C++ AVL_tree

前言 本文将会向你介绍AVL平衡二叉搜索树的实现 引入AVL树 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序普通的二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M…

【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; SpringCloud MybatisPlus JVM 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Feign 一、 基于 Feign 远程调用1.1 RestTemplate方式…

PyTorch神经网络-激励函数

在PyTorch 神经网络当中&#xff0c;使用激励函数处理非线性的问题&#xff0c;普通的神经网络出来的数据一般是线性的关系&#xff0c;但是遇到比较复杂的数据的话&#xff0c;需要激励函数处理一些比较难以处理的问题&#xff0c;非线性结果就是其中的情况之一。 FAQ:为什么要…