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.

[参考译文] TMS320F280049C:C2000ware 中常量的数据类型

Guru**** 2522770 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027220/tms320f280049c-data-type-of-constants-in-c2000ware

器件型号:TMS320F280049C
主题中讨论的其他器件:C2000WARE

在 F280049C 的 C2000ware 中、有类似的代码

uint32_t arbReg = 0U;

根据我的理解、uin32_t 是无符号长整型、因此代码应如下所示

uint32_t arbReg = 0UL;

这种差异的原因是什么? 我缺少什么吗?

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

    您好!  

    我认为它没有什么影响。 uint32_t 表示它接受32位。  无论您将后缀指定为 U 还是 UL、它都不会更改程序的含义。

    此致

    Siddharth。  

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

    请问您能解释一下您的答案吗? 无论 您将后缀指定为 U 还是 UL、为什么它都不会更改程序的含义? 这也适用于代码的其他部分、如预处理器指令和代码中的常量值。 这对于我来说对于 MISRA-C 合规性非常重要。

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

    您好!  

    您能告诉我们 MISRA 检查器引发的违规是什么吗? C2000Ware driverlib 与 MISRA C 不完全兼容、我们正在努力实现这一目标、并可能在明年年初之前提供。

    此致

    Siddharth

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

    这是一些数据类型不匹配。 基本而言、我必须使用正确的数据类型来定义变量。 因此、我想了解变量 初始化数据类型。 U 和 UL 文字是否相同? 是否有任何文档需要澄清?

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

    您好!

    如果常量只有 U 后缀、则其数据类型将是第一个能够适应其值的数据类型。  如果常量具有 UL 后缀、则其数据类型将为 unsigned long。   uint32_t 表示可以在此变量中存储32位 usigned 整数。 我尝试运行一个简单的程序、其中包含一个用 U 和 UL 后缀的变量、并观察到这两个变量都需要32位。  

    此致

    Siddharth

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

    好的。 那么、在下面的代码中

    uint32_t arbReg = 0U;

    0被初始化为无符号整型、而不是无符号长整型。当分配了 arbReg 0U 时、会涉及类型转换

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

    如果使用0U 运行代码、您将看到变量的所有32位都初始化为零、因此看起来就像类型转换完成了。

    此致

    Siddharth

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

    好的。 如何避免这种类型的转换。 我知道 UL 肯定会给我一个32但无符号整型。 即使常量值很小、16位无符号整型是否确定? 如0x3。

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

    您可以参阅以下链接中 C2000编译器用户指南中的数据类型部分

    https://www.ti.com/lit/pdf/spru514?keyMatch=SPRU514R

    此致

    Siddharth

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

    我在部分中找不到有关 INT 的任何信息。 此处仅讨论浮点数

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

    上述文档中的第103页提到了数据类型。

    此致

    Siddharth

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

    "确定。 如何避免这种类型的转换。 我知道 UL 肯定会给我一个32但无符号整型。 即使常量值很小、16位无符号整型是否确定? 如0x3。"

    这是我的问题。 我不确定文档第103页如何回答我的问题。

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

    在这种情况下、编译器以隐式方式进行类型转换。 如果要显式执行,则需要在代码中显式执行。

    此致

    Siddharth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="108005" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027220/tms320f280049c-data-type-of-constants-in-c2000ware/3806287 #3806287"]您需要在代码中显式执行此操作

    如何执行此操作?

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

    您可以将其转换为 uint32_t

    此致

    Siddharth