This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F2.8069万:左移<<使用案例问题,请查看

Guru**** 2563910 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/593736/compiler-tms320f28069-left-shift-use-case-issue-please-look-into

部件号:TMS320F2.8069万

工具/软件:TI C/C++编译器

CCS冠军,您好!

我的客户报告了一个关于左***用例的编译器问题,请帮助了解:

UINT16_t A = 0;
uINT32_t b = 0;
uINT32_t c = 0;
uINT32_t d = 0;

主{

....

A = 0x10;
B = 0x55;
d =(UINT32_t) a<16 -b;//获取错误结果 0x8000万

如果(d=0)
D=1;

A = 0x10;
B = 0x55;
C =(UINT32_t) a<16;  //正确 0x10万
d = c - b;  //获取正确的结果 0x000FFFAB

如果(d=0)
D=1;

....

}

如果将方程式更改为 d =(UINT32_t)(a<16)-b;,则工作正常。

我检查了拆卸代码,之前的代码使用LSLL,而正确的代码使用LSL。  

请提供您对此问题的意见。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在C中,减影的优先级高于移位,因此表达式“(UINT32_t)a<16-b"等同于“(UINT32_t)a)<(16-b)"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白了!
    谢谢您的快速回答。
    Eric