我正在尝试执行这个简单的代码来以十进制和浮点格式打印十六进制值,但它没有打印任何内容。
谁能帮忙..
#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 字节( double 型)。
您的“内容”变量是一个包含两个整数的数组,每个整数的大小为 1 个字节。
现在我们已经澄清了这一点,让我们引用手头的实际问题。
一般编码问题:
在每个打印的末尾添加一个空格或换行符'\n'。
您必须在函数“main”的末尾返回一个值(您可以只返回 0)。
在对“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;
}
话虽如此,我不太确定为什么您根本没有得到任何打印件...
关于c - 以十进制和浮点格式打印十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971716/