写C程序遇到这样一个问题,定义了double变量,printf输出却要%f。一直以为应该用%lf,事实上VC++6.0用%lf会报错。原因还要在探究。
贴吧有人说:double变量,scanf时必须用%lf,printf时要用%f或者%lf(但是我用%lf运行出错,不明原因)。
测试程序如下:
#include
#include
int main(void)
{
double * baibalance(int *oriimg);
int *BW = (int*)malloc( 6*sizeof(int*) );
int i;
for(i=0; i<6; i++)
BW[i]=i;
double *baiimg = (double*)malloc( 6*sizeof(double*) );
baiimg = baibalance( BW );
for(i=0; i<6; i++)
printf("%f ", baiimg[i]);
return 0;
}
double * baibalance(int *oriimg)
{
int H=2, W=3;
int i, max=oriimg[0];
double *baiimg = (double*)malloc( H*W*sizeof(double*) );//存放归一化之后的图像数组
//找灰度最大的像素点
for(i=0; i < H*W; i++)
{
if(oriimg[i] > max)
max = oriimg[i];
}
//归一化
for(i=0; i < H*W; i++)
{
baiimg[i] = oriimg[i]/(max*1.0);
}
return baiimg;
}