我正在尝试执行这个简单的代码,以十进制和浮点格式打印十六进制值,但它不会打印任何内容。
任何人都可以提供帮助..
#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);
}
答案 0 :(得分:2)
首先,没有“十六进制值”这样的东西。
数值可以是整数或非整数。
对于整数值,有几个可选的大小 - 1,2,4或8个字节。
对于非整数值,有两个可选的大小--4个字节(浮点)或8个字节(双)。
你的'content'变量是一个包含两个整数的数组,每个整数的大小为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;
}
话虽如此,我不确定为什么你根本没有得到任何印刷品......