if(id == 1)printf(“%i”,id)打印一些随机值

时间:2011-03-06 21:29:22

标签: c printf

确定。这是我遇到的最奇怪的错误之一。我的代码中有这2行

 int id=i*2000*512+512*row+column;
 if (id==1){printf("This is output %f %f %f %i \n",entire_red[id],entire_green[id],entire_blue[id],id);}

它给了我输出

  

这是输出0.000000 0.000000   0.000000 109456488。

我不知道发生了什么事!

3 个答案:

答案 0 :(得分:6)

%f格式说明符期望doublefloat隐式转换为double,用于可变参数函数)。如果variable_red等不是floatdouble变量,则printf将错误地处理参数,这可以解释为什么id整数正在打印不正确。

试试这个:

if (id==1)
    printf("This is output %f %f %f %i\n", (double)entire_red[id],(double)entire_green[id],(double)entire_blue[id],id);

或者,确保您使用entire_redentire_greenentire_blue变量的正确格式说明符。

答案 1 :(得分:0)

您是否包含stdio.h?如果不这样做,编译器可能会选择与printf不兼容的调用约定,这将获取“随机”值。

答案 2 :(得分:-1)

%i打印错误的值,因为%i正在等待整数的指针地址。 因此,您必须传递&id而不是id

我认为printf格式的其余部分已经被其他答案描述。