问题之编程语言_c语言_无符号计算
2015-09-17 21:12
761 查看
问题之编程语言_c语言_无符号计算
1.虽然查了资料大概了解了MCU处理减法的方式,使用加法加上补码,但是在处理一段程序时任然遇到了问题;
程序实现周期性处理一段程序:
u16 Systime,starttime;
if((Systime-starttime)==SCANSLAVEDATATIMES)
{
starttime = Systime;//重新载入时间
处理数据部分
}else if((Systime-starttime)>SCANSLAVEDATATIMES){
starttime = Systime;//重新载入时间
}
调试发现程序不会进入else if语句(虽然实际上基本不会进入,但是为了实验,在定时器中周期性将Systime置位0);
经过查证C语言进行减法会强制将u16转换为INT类型,此处将U16换成U32后工作正常,正确语句如下:
u32 Systime,starttime;
if((Systime-starttime)==SCANSLAVEDATATIMES)
{
starttime = Systime;//重新载入时间
处理数据部分
}else if((Systime-starttime)>SCANSLAVEDATATIMES){
starttime = Systime;//重新载入时间
}
为证实以上内容,使用下面测试语句,运行与STM32开发板
u8 a,b;
u16 c,d;
u32 e,f;
a=10;
b=0xfe;
c=10;
d=0xfffe;
e=10;
f=0xfffffffe;
printf("\ta-b: %x\r",(a-b));
printf("\tc-d: %x\r",(c-d));
printf("\te-f: %x\r",(e-f));
打印结果:
a-b: ffffff0c
c-d: ffff000c
e-f: c
不管什么平台汇编层面都是有符号数,减法都是转成INT型。
1.虽然查了资料大概了解了MCU处理减法的方式,使用加法加上补码,但是在处理一段程序时任然遇到了问题;
程序实现周期性处理一段程序:
u16 Systime,starttime;
if((Systime-starttime)==SCANSLAVEDATATIMES)
{
starttime = Systime;//重新载入时间
处理数据部分
}else if((Systime-starttime)>SCANSLAVEDATATIMES){
starttime = Systime;//重新载入时间
}
调试发现程序不会进入else if语句(虽然实际上基本不会进入,但是为了实验,在定时器中周期性将Systime置位0);
经过查证C语言进行减法会强制将u16转换为INT类型,此处将U16换成U32后工作正常,正确语句如下:
u32 Systime,starttime;
if((Systime-starttime)==SCANSLAVEDATATIMES)
{
starttime = Systime;//重新载入时间
处理数据部分
}else if((Systime-starttime)>SCANSLAVEDATATIMES){
starttime = Systime;//重新载入时间
}
为证实以上内容,使用下面测试语句,运行与STM32开发板
u8 a,b;
u16 c,d;
u32 e,f;
a=10;
b=0xfe;
c=10;
d=0xfffe;
e=10;
f=0xfffffffe;
printf("\ta-b: %x\r",(a-b));
printf("\tc-d: %x\r",(c-d));
printf("\te-f: %x\r",(e-f));
打印结果:
a-b: ffffff0c
c-d: ffff000c
e-f: c
不管什么平台汇编层面都是有符号数,减法都是转成INT型。
相关文章推荐
- C++基础知识总结----类的进阶知识点
- C语言 输入n,分别用*输出边长为n的实心菱形和空心菱形
- 黑马程序员-----------C语言基础-----------C语言实战(C语言版通讯录)
- C++带模板结构体 类型重定义*
- C++的6种位运算符
- C++容器deque
- C++容器比较
- C语言预处理那些事
- C++库调用C#的回调函数异常退出解决
- C语言实现封装、继承和多态
- C++中的虚函数
- 【C++】单例模式
- Visual C++ Tips: 关于 LNK2038 编译错误
- 函数指针基础及应用(正向调用、动态库升级成框架)
- c++ primer 学习笔记-第十五章
- C语言之空宏
- [cernRoot] How make a beautiful graph by CernRoot?
- c++杨辉三角
- Jni之在c++中调用java代码
- 详解C++编程中类模板的相关使用知识