确定。这是我遇到的最奇怪的错误之一。我的代码中有这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。
我不知道发生了什么事!
答案 0 :(得分:6)
%f
格式说明符期望double
(float
隐式转换为double
,用于可变参数函数)。如果variable_red
等不是float
或double
变量,则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_red
,entire_green
和entire_blue
变量的正确格式说明符。
答案 1 :(得分:0)
您是否包含stdio.h
?如果不这样做,编译器可能会选择与printf
不兼容的调用约定,这将获取“随机”值。
答案 2 :(得分:-1)
%i
打印错误的值,因为%i
正在等待整数的指针地址。
因此,您必须传递&id
而不是id
。
我认为printf格式的其余部分已经被其他答案描述。