繁体   English   中英

以十进制和浮点格式打印十六进制值

[英]Printing hexadecimal values in decimal and floating point format

我试图执行这个简单的代码,以十进制和浮点格式打印十六进制值,但它不打印任何东西。

谁能帮忙..

#include<stdio.h>
#include<stdlib.h>
int  main()
{
    char content[]={0x24,0x00};
    int i;
    for(i=0;i<2;i++)
    {
        printf("%d",content[i]);
        printf("%.1f",content[i]/10.0);
    }
    printf("%.2f",(100*(unsigned)content[0]+(unsigned)content[1])/1000.0);
}

首先,没有“十六进制值”这样的东西。

数值可以是整数或非整数。

  • 对于整数值,有几个可选的大小 - 1,2,4或8个字节。

  • 对于非整数值,有两个可选的大小--4个字节(浮点)或8个字节(双)。

你的'content'变量是一个包含两个整数的数组,每个整数的大小为1个字节。

现在我们已经澄清了这一点,让我们参考手头的实际问题。

一般编码问题:

  1. 在每次打印结束时添加空格或换行符'\\ n'。

  2. 您必须在函数'main'的末尾返回一个值(您可能只返回0)。

  3. 在最后两次调用'printf'时,将参数强制转换为'float',因为默认情况下编译器可能会将其“发送”为'double',在这种情况下,'printf'会将8字节值视为4-字节值,您很可能会得到不正确的打印输出。

更正后的代码:

#include<stdio.h>
#include<stdlib.h>
int  main()
{
    char content[]={0x24,0x00};
    int i;
    for(i=0;i<2;i++)
    {
        printf("%d\n",content[i]);
        printf("%.1f\n",(float)(content[i]/10.0));
    }
    printf("%.2f\n",(float)((100*(unsigned)content[0]+(unsigned)content[1])/1000.0));
    return 0;
}

话虽如此,我不确定为什么你根本没有得到任何印刷品......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM