| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C杂讲:运算符 -> 正文阅读 |
|
[C++知识库]C杂讲:运算符 |
目录 知识点1【算术运算符】+、-、*、/、%等 a / b: 取整 (a,b可以为整数,也可以为浮点数 如果a b为整数 表示相除后取整 如果 a b只要有一个为浮点数 则表示除法运算) a % b: 取余 必须为整数
? 案例:键盘输入一个数 是否能被3整除
练习:键盘输入一个4位数 请取出每位上的数值 提示:取整与取余
?知识点2【逻辑运算符】!逻辑非真:1(或其他非零值,c++ bool类型变量用 true表示真) 假:0(c++ bool 类型变量用 false表示假) !(假) == (真) !(真) == (假)
运行结果: 逻辑 && (重要)A && B A B同时为真 整个表达式结果为真。 A B只要有一个为假 整个表达式为假
运行结果:no 逻辑&& 短路特性A && B 如果A为假 系统不会执行B 这就是&&的短路特性
运行结果: 逻辑||A || B 只要A B任意一个为真 整个表达式结果为真,A B同时为假的时候 结果才为假。 逻辑|| 也有短路特性:只要A为真 编译器不会判断B的真假。
运行结果: ?综合案例: 知识点3【位运算符】二进制位操作(重要)&:按位与语法:全1为1 其他为0 ? ? 1010 1010 & 1111 0000 -------------------- ? ?1010 0000 特点:和1相与 保持不变 和0相与 清零 应用场景:将固定为清零。 |:按位或?语法:有1就为1 全0才为0 ? 1010 1010 | 1111 0000 ---------------------- ? 1111 1010 特点:和0相或 保持不变 和1相或 置1. 应用场景:将固定为置1. 案例:将1010 1010的第2、3为置1 其他为保持不变 ? 1010 1010 | 0000 1100 ------------------- ? 1010 1110 ~:按位取反语法:0变1 1变0 ~1010 1010 == 0101 0101 应用场景:配合 & | 操作 ^:按位异或语法:相同为0 不同为1 ? 1010 1010 ^ 0000 1111 ---------------------- ? 1010 0101 特点:和0异或 保持不变 和1异或 取反。 应用场景:将固定的为 发生高低电频 翻转。 案例:将1010 1010 的第0位 发生翻转. ? 1010 1010 ^ 0000 0001 ---------------------- ? 1010 1011 ^ 0000 0001 --------------------- ? 1010 1010 <<?左移运算符: 左边丢弃 右边补0注意:移动的位数 不要 超过自身长度 1010 1100 << 2 >> 右移运算符:1010 1100 >> 2 右移分类:逻辑右移 算术右移 ????????逻辑右移:右边丢弃 左边补0. ????????算术右移: ????????无符号数:右边丢弃 左边补0。 ????????有符号数: ????????????????正数:右边丢弃 左边补0。 ????????????????负数:右边丢弃 左边补1。 右移基本上是右边丢弃 左边补0 只有负数且算术右移 左边才会补1. 逻辑右移和算术右移 是编译器决定,但是我们可以检测。 练习:自己写代码 判断你的编译器 是逻辑右移还是算术右移。 综合案例:将data的第1、5清0, 第3, 4位置1 其他为保持不变 unsigned char data = 0xaa;//1010 1010 将data的第1、5清0: data = data & 1101 1101; 1101 1101 = ~(0010 0010) =~(0010 0000 | 0000 0010) 0010 0000 = 0000 0001 << 5 0000 0010 = 0000 0001 << 1 1101 1101 = ~(0x01 << 5 | 0x01 << 1) data = data & ~(0x01 << 5 | 0x01 << 1) 第3, 4位置1: data = data | 0001 1000; 0001 1000 = 0001 0000 | 0000 1000 ??????????????????= 0x01 << 4 |?0x01 << 3 data = data | (0x01 << 4 | 0x01 << 3); 知识点4【?:】表达式1 ? 值1:值2 语法:如果表达式1 为真 整个表达式的值为“值1” 否则为“值2” 案例:
知识点4【,】案例:逗号运算符
知识点5【复合运算符】+= 、-= 、*= 、/= 、%= 等等 a += b; ==> a = a + b; a *= b; ==> a= a * b; 注意:=号 右边必须看成一个整体 案例:
知识点6【++ -- 运算符】++i 或 --i 先加、减 后使用。 i++ 或 i-- 先 使用 后 加、减 案例:
案例:
注意:i++ 或 ++i 作为单独的指令 没有区别
知识点6【优先级】请分析已有的代码优先级 高 先执行, 同级别的优先级 要看结合性。 ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 6:07:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |