| |
|
开发:
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不会断句?【前后置,位,移位操作符详解】 b = ++c c++ ++a a++ -> 正文阅读 |
|
[C++知识库]C不会断句?【前后置,位,移位操作符详解】 b = ++c c++ ++a a++ |
目录 1.断句
这个代码的结果是多少呢? 在明确介绍里的知识之后我们知道 c=++a 这里计算之后c=a=a+1=6 b = ++c, c++, ++a, a++; 这个则需要我们清楚,他其实是b=++c? (c++, ++a, a++); 首先算b=++c? ? b=c=6+1=7 (c++, ++a, a++)? 的计算顺序是 c=c+1=8?,? a=a+1=7 ,? a=a+1=8 此时a=8? b=7? c=8 b += a++ + c? 其实是b=b+ a?+c? ?(因为a++是先把a赋给这里a++对应的地方,然后在整个式子算完之后再把a自身+1) 也就是b=7+ 8+8=23 然后a=a+1=9 c还是=8 除此之外还看到了网上一个很有意思的式子 x=++a+b+++c++ 到底改怎么断句呢 答案是x=(++a)+(b++)+(c++) 这个的突破口在于最后的++一定是和c配合,从后往前分析 2.移位操作符?>>右移操作符 <<左移。。。 看箭头指向哪里就应该是向哪个方向移动 a<<1? ? a向左移动1(一个比特位) 移位移的是二进制位,内存中整数的存储都是补码 所以移动的时候也是写出补码再移动(因为如果只是原码移动那较小的负数左移1岂不是变成正数)? 补码移动结束之后应该变成原码,因为打印的都是原码 原反补规则: 原码? —— 符号位不变其他位按位取反? ——>反码——+1——>补码 补码? ——-1——>反码——符号位不变其他位按位取反? ——>原码 其实仔细思考符号位不变的原因也是为了防止造成符号的丢失 <<补码左移之后? ?左边丢弃? ?右边补充0 >>? 分为两种 1.算数右移? ? 补码右移之后左边补充符号位 2.逻辑右移? ? ?补充0 一般来说编译器采用的都是1 ? 3.位操作符0为假? ?非零为真 &? ?其实和数学上“且”的逻辑相同:全真才真,有假则假 |? ? 等价“或” 有真则真,全假才假 ^? ?相同为0,相异为1? 以上的相同或相异都是在补码上操作的?
创作不易,感谢观看? |
|
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:08:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |