[C][符号]详细讲解

目录

  • 1.算术操作符
  • 2.接续符和转义符 \
    • 1.续行符使用
    • 2.转义
  • 3.单引号和双引号
  • 4.逻辑运算符
  • 5.位运算符
  • 6.移位操作符
  • 7.++ --操作
  • 8.条件操作符
  • 9.逗号表达式
  • 10.操作符的属性


1.算术操作符

  • 算术操作符+ - * / %
  • 除了%操作符以外,其他的几个操作符可以作用于整数和浮点数
  • 对于/操作符如果两个操作数都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法
    • 即:如果浮点型中要计算小数,那么算式中必要要有一个小数
    • 如:sum += 1.0 / i;
  • %操作符的两个操作数必须为整数,返回的是整除之后的余数

2.接续符和转义符 \

1.续行符使用

  • 虽然直接换行也可以,但是\有自述性,告诉使用者要换行了
if(a == 1 &&\
   b == 2 &&\
   c == 3)
{}

2.转义

  • 字面转特殊 n -> \n
  • 特殊转字面 " -> \"
  • 回车和换行是一个东西吗?
    • 回车\r 光标回到当前行的最开始
    • 换行\n 光标移动至下一行
转义字符释义
\?在书写连续多个问号时使用,防止它们被解析成三字母词
\'用于表示字符常量'
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制数字,如:\130 X
\xdddd表示2个十六进制数字,如:\x30 0

3.单引号和双引号

  • 单引号是字符,双引号是字符串
  • C99标准规定'a'叫做整形字符常量,被看作int型
    • 存入char c = 'a'中,sizeof(c) = 1是因为发生了截断

4.逻辑运算符

  • &&(逻辑与):同真则真

  • ||(逻辑或):至少有一个为真,结果则为真

  • 短路

    • &&一个条件不满足,已经不需要再看后续的条件的情况
      • &&如果已经遇到了一个假,则不会执行后续语句
    • ||一个条件已满足,已经不需要再看后续的条件的情况
      • ||如果已经遇到了一个真,则不会执行后续语句
  • 短路设计的一个有趣用法

flag && func(); // if 语句
flag || func(); // if else
  • !(逻辑非):True为0 False为1

5.位运算符

  • 注意操作数必须是整数
  • &按位与
  • |按位或
    • 任何数字和0|保持不变
    • 任何数字和1|,对应比特位被设置为1
  • ^按位异或
    • 相同为0,相异为1
    • 任何数据和0异或,都是他本身
    • 异或运算支持交换律和结合律
    • 用异或交换两个变量的值的好处?
      • 异或没有进位 --> 绝对不会发生溢出问题
  • ~按位取反

6.移位操作符

  • 注意移位操作符的操作数只能是整数
  • 左移、右移和原反补没关系
    • 只有当数据被写入或读取时,才和原反补有关系
  • 负数左右移完全不可预测
  • <<(左移):最高位丢弃,最低为补0
  • >>(右移):
    • 无符号数:最低位丢弃,最高位补0 -> [逻辑右移]
    • 有符号数:最低位丢弃,最高位补符号位 -> [算数右移] (和内部保存什么数据无关)
  • 如何理解丢弃?
    • <<或者>>都是计算,都要在CPU中进行,可是参与移动的变量,是在内存中的
      • 所以需要先把数据移动到CPU内寄存器中,再进行移动
    • 在实际移动的过程中,是在寄存器中进行的,即大小固定的单位内
      • 那么,左移右移一定会有位置跑到"外边"的情况
  • 总结
    • 左移:无脑补0
    • 右移:先判定是 算术右移 还是 逻辑右移
      • 判定依据看自身类型,和变量的内容无关
      • 判定了算数,还是逻辑,才能决定最高位补什么

7.++ --操作

  • 后置++/--:先使用,再++/--
  • 前置++/--:先++/--,后使用

8.条件操作符

  • exp1 ? exp2 : exp3

    • exp1成立,exp2执行,整个表达式的结果是:exp2的结果
    • exp1不成立,exp3执行,整个表达式的结果是:exp3的结果
  • 条件表达式通常用于赋值语句之中

max = a > b ? a : b;
  • 例子:b = a > 5 ? 1 : -1;
    • 翻译:a > 5吗?如果是,将1赋值给b,如果不是,将-1赋值给b

9.逗号表达式

  • 逗号表达式,就是用逗号隔开的多个表达式:exp1, exp2, exp3, ..., expN
    • 从左向右依次执行
    • 整个表达式的结果是最后一个表达式的结果
  • 逗号运算符的优先级别在所有运算符中最低
  • 例:(3+5,6+8)的值是14

10.操作符的属性

  • 操作符的优先级
  • 操作符的结合性
  • 是否控制求值顺序
    • 两个相邻的操作符先执行哪个?
    • 取决于他们的优先级,如果两者的优先级相同,取决于他们的结合性
      请添加图片描述

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

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

相关文章

永久免费SSL证书领取流程

一、SSL证书的前世今生 起源&#xff1a; SSL证书起源于1994年&#xff0c;当时网景公司&#xff08;Netscape&#xff09;推出了安全套接字层&#xff08;SSL&#xff0c;Secure Sockets Layer&#xff09;协议&#xff0c;这是一种加密通信协议&#xff0c;用于在客户端和服…

【软考】系统架构师知识点

目录 环路复杂度McCabe软件工具分类需求分类软件测试中间件分类等保&#xff08;信息安全等级保护&#xff09;数据流图DFD微内核架构信息系统生命周期区块链MDA模型驱动架构EJBSOA微服务REST五大原则管道过滤器 VS 仓库风格虚拟机风格质量属性 & 非功能性需求敏感点、权衡…

“2024深圳数字能源展”共同探讨数字能源未来发展方向和挑战

在数字化浪潮的推动下&#xff0c;新一轮科技革命与产业革命正以前所未有的速度加速兴起。在这个时代背景下&#xff0c;数字化技术与能源行业的高度融合&#xff0c;使得能源数字化成为未来发展的必然趋势。数字经济浪潮的蓬勃兴起&#xff0c;为能源行业的数字化转型提供了强…

JAVA面试题大全(十八)

1、说一下 jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器&#xff08;ClassLoader&#xff09;运行时数据区&#xff08;Runtime Data Area&#xff09;执行引擎&#xff08;Execution Engine&#xff09;本地库接口&#xff08;Native Interface&#xff09;…

【微服务】安装docker以及可视化界面

1.配置yum下载源为aliyun源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.下载docker不加版本号默认为最新版本 yum install -y docker-ce3.启动以及开机自启 #启动docker命令 systemctl start docker #设置开机自启命令…

免费,Python蓝桥杯等级考试真题--第16级(含答案解析和代码)

Python蓝桥杯等级考试真题–第16级 一、 选择题 答案&#xff1a;B 解析&#xff1a;&#xff08;75&#xff09;//212//26&#xff0c;故答案为B。 答案&#xff1a;B 解析&#xff1a;因为x15&#xff0c;所以range&#xff08;2,15&#xff09;&#xff0c;i的取值为2-14&a…

【机器学习】Pandas中to_pickle()函数的介绍与机器学习中的应用

【机器学习】Pandas中to_pickle()函数的介绍和机器学习中的应用 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#…

离线deb安装下载及安装实例

1、使用apt download下载deb安装包(不包括依赖包) 1.1仅下载deb安装包 sudo apt download lrzsz 1.2安装载deb安装包 sudo dpkg -i lrzsz_0.12.21-10kylin0k2_arm64.deb 注&#xff1a;dpkg安装deb包&#xff0c;部分存在depends关系&#xff0c;需要使用apt-get -f instal…

Meterpreter工具使用

Meterpreter属于stage payload&#xff0c;在Metasploit Framework中&#xff0c;Meterpreter是一种后渗透工具&#xff0c;它 属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注 入”理念实现的&#xff0c;它能够通过创建一个新进…

项目管理-风险管理

目录 一、概述 二、风险管理的概念 2.1 概述 2.2 风险的定义 2.3 风险的特点 2.3.1 概述 2.3.2 风险承受能力影响因素 2.3.3 风险特点 三、风险的类型 四、风险的管理过程 4.1 概述 4.2 风险管理计划 4.3 风险识别 4.4 风险定性分析 4.5 风险定量分析 4.6 风险应…

【PHP项目实战训练】——laravel框架的实战项目中mysql数据库的数据的数据在blade.php中展示

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

thingsboard接入臻识道闸

thingsboard 和tb-gateway 是通过源码idea启动测试开发 为了测试这里只是买了臻识道闸的摄像机模组方便调试,然后添加一个开关量开关模拟雷达 道闸品牌 臻识C3R3C5R5变焦500万车牌识别相机高速追逃费相机华厦V86像机 淘宝地址 https://item.taobao.com/item.htm?_us1thkikq4…

回顾java-异常

异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中&#xff0c;异常本身是一个类&#xff0c;产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 需…

python探索图表配置的深度与广度

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、基础配置&#xff1a;从全局到细节 示例&#xff1a;颜色与边界的设置 二、文本与标签…

【跟着例子学MySQL】SQL进阶 – 视图、事务和变量

文章目录 前言回顾视图事务用户变量未完待续 前言 举例子&#xff0c;是最简单有效的学习方法。本系列文章以一个贯穿始终的场景&#xff0c;结合多个实例讲解MySQL的基本用法。 ❔ 为什么要写这个系列&#xff1f; 模仿是最好的老师&#xff0c;实践是检验成果的方法。本系列…

基于VMware安装Linux虚拟机

1.准备Linux环境 首先&#xff0c;我们要准备一个Linux的系统&#xff0c;成本最低的方式就是在本地安装一台虚拟机。为了统一学习环境&#xff0c;不管是使用MacOS还是Windows系统的同学&#xff0c;都建议安装一台虚拟机。 windows采用VMware&#xff0c;Mac则采用Fusion …

视频集中存储LntonCVS视频监控汇聚平台智慧园区应用方案

智慧园区&#xff0c;作为现代化城市发展的重要组成部分&#xff0c;承载着产业升级的使命&#xff0c;是智慧城市建设的重要体现。在当前产业园区竞争日益激烈的情况下&#xff0c;越来越多的用户关注如何将项目打造成完善的智慧园区。 在智慧园区的建设过程中&#xff0c;各类…

PDF打印技巧:如何跳过不需要的页面?如何关闭打印权限?

作为打工人&#xff0c;经常需要打印各种文档&#xff0c;比如PDF文件。今天分享一下PDF文件的两个打印技巧&#xff0c;如果你还不知道&#xff0c;就一起来看看吧&#xff01; 技巧1&#xff1a;打印PDF如何跳过不需要的页面 有时候&#xff0c;一个PDF文件有很多页&#xf…

Golang | Leetcode Golang题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; func hasPathSum(root *TreeNode, sum int) bool {if root nil {return false}if root.Left nil && root.Right nil {return sum root.Val}return hasPathSum(root.Left, sum - root.Val) || hasPathSum(root.Right, sum - roo…

AI率怎么降低?有哪些论文降重降AI率的工具和方法?

关于aigc降重怎么降重&#xff1f;论文降重有哪些方法&#xff1f;有没有好用的降重软件&#xff1f;网上很多大神都有回答&#xff0c;但是最近还是会有很多学弟学妹会问这些问题&#xff01; 有没有发现论文降重像玄学一样复杂&#xff1f;最近刚完成一篇论文&#xff0c;使…