1、MDK编译器单字节的负数-1,-2,-3... ... 处理:存储,类型转换,位对齐。

char 定义的变量在运算过程尤其类型转换,逻辑比大少会被当做 unsigned char 处理,这里很容易出错,为了避免这类错误发生,单字节有符号变量最好显式的声明 signed char

char varbyte = -;
if(varbyte > -) printf("varbyte > -2 \r\n");
else printf("varbyte < -2 \r\n"); 输出结果: varbyte > - //输出结果却是 varbyte > -2,也就是说 -5>-2 这显然是计算出错。
//因为在运算过程中 常数 -5 是int类型,这时varbyte=-5会先转成int 型的
//251(256-5=251),再做251 和 -2比大小,251>-2,输出varbyte > -2; //如果显式的声明unsigned char varbyte = -5;结果就是预期值
//signed char varbyte = -5;会转对齐4字节的 int -5,-5>-2不成立 signed char varbyte = -;
if(varbyte > -) printf("varbyte > -2 \r\n");
else printf("varbyte < -2 \r\n"); 输出结果: varbyte < -2
 
2、运算优先级,左移<<,右移>> 是低于 +,-,*,/
unsigned char result = <<+;
// result = 32 而不是10
//+优先于<<,计算的是 2<<(3+2) = 2的5次方是32
 
 
 

STM32 MDK C 常见易错点的更多相关文章

  1. js常见易错点

    原文:http://www.jianshu.com/p/1c77853d4f01 前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函 ...

  2. C语言常见易错题集(分析及解答)(仅可用于交流,勿用于商业用途)

    1.能正确表示a和b同时为正或同时为负的逻辑表达式是( D  ). A.(a>=0||b>=0)&&(a<0||b<0)             B.(a> ...

  3. JAVAWEB常见易错问题大汇总

    1.如何修改tomcat访问端口? Answer: conf/server.xml 2.如何配置tomcat Manager访问用户? Answer: conf/tomcat-users.xml 主要 ...

  4. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  5. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  6. JavaScript易错点转载

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  7. JavaScript易错知识点整理[转]

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  8. forEach、map、filter、find、sort、some等易错点整理

    一.常用方法解析   说起数组操作,我们肯定第一反应就是想到forEach().map().filter()等方法,下面分别阐述一下各方法的优劣. 1.forEach 1.1 基础点   forEac ...

  9. JS易错知识点

    JAVASCRIPT易错知识点整理 前言 本文是学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由 ...

随机推荐

  1. Python中super的用法【转载】

    Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143  收藏 展开 转载自 Python面向对象中super用法与MRO ...

  2. Execl导出系统

    前台代码: <button class="btn btn-warning" type="button" onclick="location.hr ...

  3. centos7安装谷歌浏览器

    1. 安装: 考虑到国内无法访问Google,所以需要自己配置yum源: 1.在目录 /etc/yum.repos.d/ 下新建google-chrome.repo文件,命令如下: 1.cd /ect ...

  4. Big research problems (1)

    1. how to measure the uncertainty of prediction model or data analysis? 2.

  5. Illegal target for the requested operation

    org.tigris.subversion.javahl.ClientException: Illegal target for the requested operation svn: Commit ...

  6. 载 js验证密码 必须由大小写字母、数字和特殊字符组成

    转自:https://blog.csdn.net/weixin_43824935/article/details/93601064 密码长度8-16位 必须由大写字母,小写字母,数字,特殊符号组成 正 ...

  7. C#中获取时间戳

    { 注意:下面是以毫秒为单位的13位  UTC  时间戳(非正规) }//先取得当前的UTC时间,然后转换成计算用的周期数(简称计时周期数),每个周期为100纳钞(ns)=0.1微秒(us)=0.00 ...

  8. SpringBoot整合WEB开发--(四)@ControllerAdvice

    1.全局异常处理: @ControllerAdvice处理全局数据,一般搭配@ExceptionHandler,@ModelAttribute以及@InitBinder使用. @ControllerA ...

  9. es2.0的语法学习

    确定文档和查询有多么相关的过程被称为打分(scoring):将查询作为输入,使用不同的手段来确定每一篇文档的得分,将每一个因素最后通过公式综合起来,返回该文档的最终得分.这个综合考量的过程,就是我们希 ...

  10. Java 浮点数精度控制

    1.String.format​(String format,Object… args) Java中用String.format()来控制输出精度, format参数用来设置精度格式, args参数代 ...