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. mysql数据库测试脚本

    背景: 对mysql的底层代码进行了重构,需要回归测试mysql的基本功能 测试目标: 涵盖功能点如下 1.创建库,删除库,重命名库 2.创建表(需要涵盖所有基本的数据类型,主键,自增,默认值,不允许 ...

  2. linux中的oracle数据库

    安装orcal http://www.cnblogs.com/nucdy/p/5603998.html 搭建Linux操作系统+Oracle数据库的环境 https://blog.csdn.net/p ...

  3. RemoteViews 整理

    前言 RemoteViews表面意思就是远程的view,这个就很难理解了,远程的view.但是英语是抽象,remote本身就是偏僻的,偏远的意思. 所以remoteViews 就是地方view,天高皇 ...

  4. Visual Studio Code快捷键大全

    原文链接:https://segmentfault.com/a/1190000007688656 常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 ...

  5. 【转】C#路径中获取文件全路径、目录、扩展名、文件名称

    C#路径中获取文件全路径.目录.扩展名.文件名称 原文链接:https://www.cnblogs.com/JiYF/p/6879139.html 常用函数 需要引用System.IO   直接可以调 ...

  6. (复习)父子组件传值使用v-modal双向绑定,报错Avoid mutating a prop directly解决方案

    报错:Avoid mutating a prop directly since the value will be overwritten whenever the parent component. ...

  7. 配置数据库属性validationQuery

    配置数据库时,属性validationQuery默认值为“select 1”,对于oracle值应为“select 1 from dual” validationQuery属性:用来验证数据库连接的语 ...

  8. _mysql_exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')

    最近写了一个定时脚本,每天凌晨跑,每次跑时间很长. 在测试这个脚本的时候,跑了一个小时,发生一个错误,脚本中断,错误如下: _mysql_exceptions.OperationalError: (2 ...

  9. instGroup/constraint/Gcell/busguide/netgroup/Bump

    1. instGroup Instance group.中文名例化单元组.Instance group可以用来group一些instances, 在做placement时,如果你希望一些instanc ...

  10. android Seekbar 拖动按钮显示不全问题

    增加下面属性即可解决: android:thumbOffset="0dip" <SeekBar android:id="@+id/controller_progre ...