比如说我输入:#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是什么型都应该按照原数输出啊。。
#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字节内存全部当成整形输出,故是乱码!