哪位大侠帮帮我?MCS08AW16强制类型转换的问题
- UID
- 757217
- 性别
- 女
|
哪位大侠帮帮我?MCS08AW16强制类型转换的问题
I_ad = ( int16_t )( ATD_Value[0] - ATD_Value[1] );
I_ad是有signed Int,有符号16位
ATD_Value[x]是unsigned char,无符号8位
typedef signed int
int16_t;
ATD_Value[0] - ATD_Value[1]的差值为0或-1,BDM观察强制转换的过程中0用-256表示,
-1用255表示,是代码的问题?还是编译器优化的问题?
附Codewarrior反汇编出的代码
LDA ATD_Value:1
PSHA
LDA ATD_Value
TSX
SUB ,X
STA ,X
CLRA
SBC #0
PSHA
PULH
PULX
STHX I_ad
求高手解答,不胜感激! |
|
|
|
|
|
- UID
- 521872
- 性别
- 男
|
本帖最后由 fayefayehoo 于 2009-11-11 16:42 编辑
试试这样写
I_ad = (int16_t)ATD_Value[0] - (int16_t)ATD_Value[1]; |
|
|
|
|
|
- UID
- 757217
- 性别
- 女
|
|
|
|
|
|