全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!

如果将按位操作符~和<<应用于基础类型unsigned char或unsigned short的操作数,则结果应立即转换为该操作数的基础类型。

看了一下这一条规则,我觉得如果拿这一条规则来考察我现在接触到的一群工程师的话,估计十之八九会全都栽跟头。当然,这样的操作在现在的软硬件开发平台上用到的不多是一个原因。另一个原因自然还是基本功并不是很扎实。

为什么要在这里来一个强制数据类型转换呢?主要是考虑到这样的操作可能会引起数据类型的隐形扩充。从移位的操作来考虑比较容易考虑明白,因为左移在一定程度上就代表这乘以一个大于1的数值,很可能在操作的时候遇到数据表达的范围出现不够用,最终结果出现了数据溢出这样的情况。

关于按位取反的操作,需要注意一点是这个操作会把一个数据扩展为相关平台的整形来进行处理。这样,如果处理的数据类型是8bit之类的短类型,在进行按位取反的时候可能就会多出来一些位。因此,类似的操作在处理的时候加上一个强制数据类型转换可以保证数据可以截断。

小结:这是一条一看就懂,但是不看很少考虑的规则。可能正好是自己用的不算多,这方面没栽过坑,因此这方面没有太多的关注。后续在代码编写以及阅读的时候需要留心了,可能会有bug不经意之间被引入。

1208_MISRA_C规范学习笔记_Rule 10.3 Rule 10.5相关推荐

  1. 1209_MISRA_C规范学习笔记_Rule 10.6

    全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 对于所有的无符号类型的常量数字都用一个后缀U来进行标识. 这里面有几个可能导致误区的知识点: ...

  2. 1203_MISRA_C规范学习笔记_Rule 9.1

    全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking! 所有的自动变量在使用之前都应该被赋值. ...

  3. 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)

    菜鸟学习笔记:Java提升篇10(网络2--UDP编程.TCPSocket通信) UDP编程 TCP编程(Socket通信) 单个客户端的连接 多个客户端的连接(聊天室案例) UDP编程 在上一篇中讲 ...

  4. 979_MISRA C规范学习笔记3

    MISRA C规范学习笔记3 Grey 全部学习汇总: https://github.com/GreyZhang/misra_c_hacking MISRA C规范学习笔记3 文档学习 实际的实施中, ...

  5. amazeui学习笔记--css(常用组件10)--导航条Topbar

    amazeui学习笔记--css(常用组件10)--导航条Topbar 一.总结 1. 导航条:就是页面最顶端的导航条:在容器上添加 .am-topbar class,然后按照示例组织所需内容.< ...

  6. 几何光学学习笔记(39)- 7.10 中国颜色体系

    几何光学学习笔记(39)- 7.10 中国颜色体系 7.10 中国颜色体系 1.无彩色系 2.有彩色系 3.颜色立体 4.颜色标号 7.10 中国颜色体系 GB/T15608-1995 中国颜色体系标 ...

  7. oracle 操作系统升级,学习笔记:Oracle升级 linux操作系统10.2.0.1 升级至 10.2.0.3详细过程...

    天萃荷净 记录一次用户现场Oracle 10G数据库升级的过程,Linux操作环境 FOR 10.2.0.1 to 10.2.0.3的版本升级过程 数据库版本linux 32位(10.2.0.1升级到 ...

  8. 阿里java开发规范学习笔记 (V1.5华山版)

    学习总结 本次开发编码规范手册的变更,相比上一版本存在较多的变化. 主要集中在,对于其中的原理有了更深层次的追踪和了解: 1. 集合元素章节对于集合元素的处理上容易出现问题的地方. 2. 新增敏捷模式 ...

  9. 1211_MISRA_C规范学习笔记_表达式的要求

    全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 12.1, 规则12.1(咨询):在表达式中,应该对C语言的运算符优先级规则有一定的限制. 关 ...

  10. 蓝牙篇之蓝牙核心规范学习笔记(V5.3)汇总

    蓝牙核心规范5.3版,一共3085页,博主以思维导图的方式,记录博主学习蓝牙规范,想要一起学习的小伙伴,可以一起学习. 特别声明:想要啃3000多页英文规范,可以直接忽略本专栏. 关注左侧公众号,回复 ...

最新文章

  1. Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)
  2. 谷歌用AI训练“耳机线”,实现了触摸屏大多数功能
  3. 一天学习一点之express demo
  4. 软考高项之进度管理——攻坚记忆
  5. category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
  6. 10 分钟使用 Spring Boot + Vue + Antd + US3 搭建自己的图床
  7. Spring Boot-@Configuration注解
  8. mysql数据库5.7配置文件_mysql数据库5.7版本部署
  9. 助力高校数字化建设,QQ小程序开发大赛正式启动
  10. LogDashboard 1.0.4 版本发布
  11. 设计模式(1):工厂模式
  12. [Internet]使用IP安全策略阻止Ping
  13. 用小程序完成简单的详情列表功能
  14. 芬兰建筑师帕特里克艾瑞克森先生一行访问云创
  15. 网课笔记 ☀ 经济学原理课后习题及答案
  16. 服务器主板重装系统,简单几步教你如何重新安装系统
  17. python 猴子偷桃问题
  18. 解决Vscode Unable to start debugging
  19. graphviz基本使用及常见问题
  20. python根据x轴、y轴坐标在坐标轴里画出曲线图

热门文章

  1. android translate 参数,关于安卓的TranslateAnimation的使用
  2. PDF转换CAD有什么方法
  3. 第七课GUI练练表面功夫
  4. Google退出中国的三大原因和四大后果(转载)
  5. ET框架——demo与自定义登录
  6. 特征工程之特征选择——来自小白的进阶之路(二)
  7. python基础:基础语法
  8. 如何寻找p3c的主类,或main方法
  9. 数据库-SQL语句创建与修改
  10. 餐饮企业免费申请点餐小程序