[C][符号]详细讲解

news/2024/7/20 17:41:43/文章来源:https://blog.csdn.net/qq_37281656/article/details/139132199

目录

  • 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.操作符的属性

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

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

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

相关文章

从这些原理中,读懂迅软DSE加密系统

加密技术是保护信息安全的系统&#xff0c;通过对原始数据进行加密&#xff0c;使得未经授权的人无法读取这些信息。 一、迅软DSE加密系统干什么用的&#xff1f; ★保护隐私&#xff1a;加密确保个人、机构的敏感信息在传输和存储过程中不被未授权的人访问。 ★防止数据泄露…

json/excel文件上传下载工具方法汇总

文章目录 浏览器下载json文件浏览器下载excel文件【Workbook】浏览器导入json文件【ObjectMapper】浏览器导入excel文件【Workbook】ResourceLoader读取类路径下单个jsonResourceLoader读取类路径下所有json文件 浏览器下载json文件 Operation(summary "设备模型导出(带分…

计算机图形学入门03:二维基本变换

变换(Transformation)可分为模型(Model)变换和视图(Viewing)变换。在3D虚拟场景中相机的移动和旋转&#xff0c;角色人物动画都需要变换&#xff0c;用来描述物体运动。将三维世界投影变换到2D屏幕上成像出来&#xff0c;也需要变换。 1.缩放变换 缩放(Scale)变换&#xff1a; …

Echarts圆环图偏移后 中心文字居中对齐实现

像上图中这样圆环图并不在div的中间时&#xff0c;中心的文本需要居中展示 一开始用left百分比但数据一旦变长或变短就会偏移 像这样 实在是太不美观了 所以我们这里使用动态的left通过文本的长度来计算 /*** 计算文本宽度* param {String|Number} text* param {String} font*…

【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA

文章目录 一、内容介绍二、内页插图三、作者简介四、前言/序言五、目录 一、内容介绍 《AI数据处理实战108招&#xff1a;ChatGPTExcelVBA》通过7个专题内容、108个实用技巧&#xff0c;讲解了如何运用ChatGPT结合办公软件Excel和VBA代码实现AI办公智能化、高效化。随书附赠了…

代码随想录算法训练营第36期DAY43

DAY43 343整数拆分 注意&#xff1a;当几个数的数值相近&#xff0c;乘积才会尽可能地大&#xff08;好想&#xff1a;数一大一小&#xff0c;最大当然是自己乘以自己&#xff09; 代码随想录官方题解&#xff1a; class Solution {public: int integerBreak(int n) { …

【Vue】input框自动聚焦且输入验证码后跳至下一位

场景&#xff1a;PC端 样式&#xff1a; <div class"verification-code-input"><input v-model"code[index]" v-for"(_, index) in 5" :key"index" type"text" maxlength"1" input"handleInput(i…

Centos7时区设置及手动修改时间

一、修改系统时区 1、查看时区命令 timedatectl 2、设置时区命令 #下面将时区设置为上海时区 timedatectl set-timezone Asia/Shanghai 3、查看时区看一下新时区有没有生效 timedatectl 二、手动修改系统时间 修改系统时间 date -s "2023-12-25 16:05:10" 查…

【易错题】数据可视化基础练习题(30道选择题)#CDA Level 1

本文整理了数据可视化基础知识相关的练习题&#xff0c;共30道&#xff0c;适用于想巩固数据可视化知识的同学&#xff0c;也可作为备考CDA一级的补充习题。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-可视化&#xff09;。 1&#xff09; 2&#xff09; 3&…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前&#xff0c;AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展&#xff0c;基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上&#xff0c;多个领域展现出了前所未有的能力。无论是自然语言处理、…

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

工控一体机7寸显示器电容触摸屏(YA131607JK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA131607JK产品介绍&#xff1a; YA131607JK 搭载 Android10 主流操作系统&#xff0c;具有系统版本更高、占用内存更低、运行效率…

HTML-JavaWeb

目录 1.标题排版 2.标题样式 ​编辑 ​编辑 小结 3.超链接 4.正文排版 ​编辑​编辑​编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…

linux开发之设备树五、设备树描述中断实践

设备树是基于设备总线模型的&#xff08;platform&#xff09; 1、添加节点 假设中断引脚为&#xff1a;GPIO0_B5 下面使用设备树来描述它 1、写节点&#xff0c;起节点名字 这里用了ft5x06的触摸芯片&#xff0c;然后I2C的地址为38 2、为节点添加属性 首先添加compatible…

抖店除了商品卡流量还有什么流量?

我是王路飞。 随着抖音开放商品卡流量&#xff0c;它一度成为去年最大热的玩法。 包括到现在&#xff0c;还有很多新手对其有一种莫名的信任感&#xff0c;只想做商品卡流量。 那么抖店除了商品卡流量还有什么流量玩法呢&#xff1f;哪种比较容易出单呢&#xff1f; 今天就…

Facebook:连接世界,畅游社交之旅

作为全球最大的社交平台之一&#xff0c;Facebook不仅仅是一个网站&#xff0c;更是一个连接世界的桥梁&#xff0c;让人们可以轻松地与全球各地的朋友、家人和同事保持联系&#xff0c;分享生活、交流想法&#xff0c;畅游社交的无边界之旅。本文将带领读者探索Facebook的魅力…

【问题解决】pycharm中添加python interpreter报错 conda excutable is no found

选择安装目录下的conda.bat文件&#xff0c;然后点击“Load Environments”按钮&#xff0c;然后在列表中选择conda环境即可。

C++笔记:Hash Function 散列函数

1. Hash Function 散列函数 简单的Hash实现&#xff1a; class CustomerHash { public:size_t operator()(const Customer& c) const {return hash<std::string>()(c.fname) // first namehash<std::string>()(c.lname) // last namehash<long>()(…

嵌入式学习记录5.18(多点通信)

一、套接字属性设置相关函数 #include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname,const void *op…

量化交易入门:如何在QMT中配置Python环境,安装第三方依赖包

哈喽,大家好,我是木头左! 引言 QMT,作为量化交易系统中的佼佼者,以其强大的功能和灵活的操作性,受到了广大投资者的青睐。但是,对于很多新手来说,如何在QMT中配置Python环境,安装第三方依赖包,却是一个让人头疼的问题。本文将从零开始,手把手教你如何在QMT中配置Py…