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.

[参考译文] TMS320F2800154-Q1:无符号和有符号之间的数据类型转换

Guru**** 2484615 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1439355/tms320f2800154-q1-data-type-conversion-between-unsigned-and-signed

器件型号:TMS320F2800154-Q1

工具与软件:

您好:

在代码中、如果涉及有符号和无符号数据类型之间的转换、

例如、int16_t a=-32;

uint16_t b = 16;

a/b =?

使用 NXP S32ds 开发环境时、 即使没有显式数据转换、也可以获得正确的结果-2

但是、在 CCS 中、如果没有显式的数据类型转换用于计算、则 将获得不正确的结果4094

我是否可以问、CCS 编译器是否会自动对数据执行数据类型转换?

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

    您好!

    为了解释发生了什么:数据类型转换在执行操作之前发生。  无符号整数类型优先、因此"A"转换为无符号整数。 转换为无符号整型的 signed -32会因负数在二进制补码中的表示方式而产生非常大的正值。 因此、int16_t -32变为0xFFFF-32 = 65504 (无符号整数)。  因此、 a/b = 65504/16 = 4094。 更多信息也可在用户指南中找到: https://www.ti.com/lit/ug/spru514z/spru514z.pdf 

    此致、

    Allison

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

    实际上、我知道 发生了什么、但我的问题是"能否让 CCS 编译器自动对数据执行数据类型转换?"

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

    是的、正如我提到过的、数据类型转换在本例中是隐式的。

    此致、

    Allison