#include
//#include
int main()
{
int i;
int i2;
int siz;
float P[14]={0,1,2,3,1,1,5,1,2.3,6.1,500,130,5,0};
siz=sizeof(P);//打印出数组P的字节数
printf("sizeof=%d\r\n",siz);
for(i=0;i<14;i++)
{
printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示
}
for(i2=0;i2<14;i2++)
{
printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示
}
}
#include
#include
int main()
{
int i;
int i2;
int siz;
float P[14]={0,1,2,3,1,1,5,1,2.3,6.1,500,130,5,0};
siz=sizeof(P);//打印出数组P的字节数
printf("sizeof=%d\r\n",siz);
for(i=0;i<14;i++)
{
printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示
}
for(i2=0;i2<14;i2++)
{
printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示
}
}
好像VC++6.0运行的结果只有强制转换有用,不知道是不是我写的语句有问题
1、C语言整型使用原码、反码、补码进行编码,而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的,因为编码格式不一样。
2、正确的作法是使用c语言标准库中的floor和ceil函数来进行向下或者向上取整。比如:
#include
#include
int main()
{
double d = 1.1;
int up = ceil(d);
int down = floor(d);
printf("up=%d\tdown=%d\n", up, down);
return 0;
}
//结果:up=2 down=1
C中浮点型转为整型,直接截取小数部分,把整数部分作为结果。不必关心存储细节
可以通过强制转换类型.例如 float x=3.555;
int i;
i=(int)x;
printf("i=%d",i);
直接截取浮点数的整数部分