VC++6.0中的%d和%f等有什么区别?

比如说我输入:
#include<stdio.h>
main()
{
float n;
n=2211.12;
printf("n=%f",n);
}
如果为%f的话输出是:2211.12,但如果printf里变成%d的话,结果就是-2147483648,这是什么原因?%d的意思不是以十进制格式输出吗。。?那不就应该还是原来的数不变么。。?我刚学C语言~。。还有,为什么如果把前面的float改成int在用%d输出就可以了呢(输出是2211)~。。?我感觉既然%d表示以十进制格式输出那不论定义的n是什么型都应该按照原数输出啊。。
最新回答
下一個街角

2025-03-26 05:11:01

#include<stdio.h>
main()
{
float n;
n=2211.12f;
int i;
i=n;
printf("n=%f",n);
printf(" i=%d",i);
}
如果这样写i是2211,这涉及浮点型和整形的转换问题,float占4字节,有的字节是表示整数位,有的小数位,具体可以看浮点型定义;int型也是4字节,但都是表示的是整数。用i=n赋值,就把浮点型对应的整数值传给整形,进行了转换,如果直接%d输出显示,默认的包浮点型所占的4字节内存全部当成整形输出,故是乱码!
因为太帅被罚块

2025-03-26 11:37:47

刚 入门 吧? 好好看看资料吧