微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > C语言反汇编的一个奇怪问题

C语言反汇编的一个奇怪问题

时间:10-02 整理:3721RD 点击:
同样一个C语言式子,只是一个采用16进制,一个采用10进制,为何反汇编代码不同?
各位前辈们是否有遇到这种问题?是什么原因呢。

for example:

void a(void)
{
unsigned int MAX_C, MIN_C;
int OFFSET_C;
OFFSET_C = (65535 - MAX_C - MIN_C)>>1 ;
}



void a(void)
{
unsigned int MAX_C, MIN_C;
int OFFSET_C;
OFFSET_C = (0xffff- MAX_C - MIN_C)>>1 ;
}

反汇编的结果就不一样,请问各位前辈这是为什么?

请问在哪儿加一个什么样的强制类型转换符?

因为如果编译65535的话,编译器会把它当作long编译,而编译0xffff会把它当作short编译。
因此你应该在65535之前加上(unsigned int)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top