#include<stdio.h> int main() { float a=10.0f; printf("%d\n",a); } 这个程序的输出结果为什么为0?
3个回答
展开全部
C/C++ 规定 输出输入格式 要与 变量类型 匹配。float 不能 用 %d 格式输出。
不管你 a=10.0, a=20.0 用 %d 输出 就是 0。没什么 道理。
用联合体可以洞悉内存字节里的内容
union U{
float a;
int b;
char c[4];
} u;
main(){
u.a = 10.0; // 用 12.0 20.0 ....
printf("c= %x %x %x %x\n",u.c[0],u.c[1],u.c[2],u.c[3]);
printf("b= 0x%x\n",u.b);
printf("b= %d\n",u.b);
printf("a=%f\n",u.a);
printf("a=%d\n",u.a); // 打印 0
不管你 a=10.0, a=20.0 用 %d 输出 就是 0。没什么 道理。
用联合体可以洞悉内存字节里的内容
union U{
float a;
int b;
char c[4];
} u;
main(){
u.a = 10.0; // 用 12.0 20.0 ....
printf("c= %x %x %x %x\n",u.c[0],u.c[1],u.c[2],u.c[3]);
printf("b= 0x%x\n",u.b);
printf("b= %d\n",u.b);
printf("a=%f\n",u.a);
printf("a=%d\n",u.a); // 打印 0
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这跟具体的数字在内存中的表示方式有关.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询