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.

[参考译文] TMS320F28388D:控制台窗口的输出结果与 printf 很奇怪

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1119362/tms320f28388d-the-output-result-of-the-console-window-is-strange-with-printf

器件型号:TMS320F28388D

尊敬的先生

我尝试使用 printf ()打印到控制台窗口,但以下两个代码之间存在差异。

我想用 printf 打印变量的值、您知道为什么显示0吗?

uint32_t i = 200;

printf ("\ n \ rvalue i =% d \ n"、i);

printf ("value =% d \ n"、200);  

此致

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

    您好!

    您的空间是否介于'%'和'd'之间?

    请尝试以下行:

    uint32_t i = 200;

    printf ("\n \rvalue i =%d \n"、i);

    printf ("value =%d \n"、200);

    谢谢、此致、

    桑托什

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

    实际代码中没有空格。

    使用所示的代码获得了相同的结果。

    此致

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

    您好!

    当我如下面代码中所示更改变量并执行它时、结果会有所不同。

    请告诉我产生此结果的原因。

    uint32_t i = 200;
    printf ("\n \rvalue i =%d \n"、i);
    printf ("value =%d \n"、200);
    unsigned char ii = 200;
    printf ("\n\rvalue ii =%d \n"、ii);
    无符号短整型 iii = 200;
    printf ("\n\rvalue iii =%d \n"、iii);
    长 IIIi = 200;
    printf ("\n \r 值 IIIi =%d \n"、IIIi);
    unsigned long IIIII = 200;
    printf ("\n \rvalue IIIII =%d \n"、IIIII);
    int iiiiiiiiiiiiii=
    printf ("\n \rvalue iiiiii =%d \n"、iiiiii);

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

    uint32_t i = 12345678;
    printf ("\n \ruint32_t i =%d \n"、i);
    printf ("\n \runsigned int i =%d \n"、(unsigned int) i);
    printf ("\n \r int i =%d \n"、(int) i);
    printf ("\n \runsigned char i =%d \n"、(unsigned char) i);
    printf ("\n \r char i =%d \n"、(char) i);
    printf ("\n \runsigned short i =%d \n"、(unsigned short) i);
    printf ("\n \r short i =%d \n"、(short) i);
    printf ("\n \runsigned long i =%d \n"、(unsigned long) i);
    printf ("\n \r long i =%d \n"、(long) i);
    printf ("\n\r float i =%d \n"、(float) i);

    运行上述代码会导致以下结果:

    uint32_t i =188

    unsigned int  i =24910

            int  i =24910

    unsigned char i =24910

            字符 i =24910

    无符号短整型 I =24910

            短接 I =24910

    无符号长整型 I =188

            长 I =188

            float I =16743

    12345678->0xBC614E

    24910->0x614E

    188->0xBC

    此致

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

    请在此链接中浏览有关 printf 的提示:

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_tips_for_using_printf.html

    https://software-dl.ti.com/ccs/esd/documents/c2000_c28x-code-generation-tips-and-tricks.html

    谢谢、此致、

    桑托什

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

    我解决了。

    由于 C2000的 int 为16位、因此"% d"中似乎仅显示了高达16位的内容。

    32位输出为"% Lu"和"% ld"。

      printf ("\ n \ runsigned long i =% lu \ n"、(unsigned long) i);

      printf ("\ n \ r long i =% ld \ n"、(long) i);

    此致