Keil_MDK调试经验总结一

第一点 整型和浮点型的差别

windows操作系统,64位机中,
char: 1个字节
short: 2个字节
int: 4个字节
long: 8个字节

//正确定义
static  float Fen_Zi = 0;
float Fen_Mu = 200;   //每个姿态的运动周期 200*7 = 1400ms
 static float Percentage = 0;
static uint8_t State_N = 1;  
uint8_t flage;
//错误定义
static  float Fen_Zi = 0;
float Fen_Mu = 200;   //每个姿态的运动周期 200*7 = 1400ms
 static uint8_t Percentage = 0;
static uint8_t State_N = 1;  
uint8_t flage;
这样定义Percentage一直会是0,直到等于200 再直接把数据传送给舵机

第二点 在stm32f103中硬件不支持浮点数运算

在定义中尽量减小浮点数的出现
在计算中,适当的放大或者缩小变量

第三点 注意有符号号整型 int 和无符号整型 uint 的使用

第四点 在宏定义浮点数时在后定义的浮点数后面加一个f

#define 1.2f

第五点 整型和浮点型之间的运算

两个整型相除 得到是整型小数部分舍去
只要有一个是浮点数 小数部分就不会舍去

第六点 字符 和 浮点型 整型 之间的运算

#include <stdio.h>

int main(void) {
   int a = 0; 
    a = 'A'+1.6;
	printf("%d",a);
	return 0;
}

运行结果是 66
所以 字符与整形之间的 加法是将字符转为十进制"ACSII"

#include <stdio.h>

int main(void) {
   int a = 0; 
    a = 'A'*1.6;
	printf("%d",a);
	return 0;
}

运行结果是104
所以 字符与整形之间的 乘法是将字符转为十进制"ACSII"
以此类推

第七点 自增 自减

#include <stdio.h>

int main(void) {
   int a = 0; 
   int b=++a;
   
   printf("%d",b);
   return 0;
}

结果 b = 1

#include <stdio.h>

int main(void) {
   int a = 0; 
   int b=a++;
   
   printf("%d",b);
   return 0;
}

结果 b= 0;
可见,操作数在运算符的前 (先赋值后运算);操作数在运算符的后 (先运算后赋值)

第八点 取余

取余运算在程序设计中都有着广泛的应用,例如判断奇偶数的方法就是求一个数字除以2 的余数是1 还是0。在进行取余运算时,运算结果的正负取决于被除数(%左边的数)的符号,与除数(%右边的数)的符号无关。
如:(-5)%3=-2,而 5%(-3)=2。

参考文章

1.c语言不同数据类型之间的运算(隐式转换、整型提升、强制类型转换、不同类型之间的运算)
2.C语言不同数据类型的混合运算
3.c语言中字符的加减运算,c语言算术运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值