printf在C中给出了错误的输出

时间:2012-11-17 16:26:32

标签: c printf scanf

这可能是一个非常基本的问题,但我无法在任何地方找到答案,这是我在C语言编程几周后第一次遇到问题。本质上,如果我写一些代码看起来像这样:

int size;
scanf("%d", &size);
printf("size is %d", &size);

如果我输入尺寸= 2,程序将打印出133692行或类似数字的内容。为什么是这样?我在这做错了什么?

5 个答案:

答案 0 :(得分:3)

尝试

printf("size is %d", size);

&为您提供变量的内存位置(地址)。

printf("size is %d", &size);

因此,上面将打印size的内存位置(地址),而不是size中存储的值。

答案 1 :(得分:1)

你必须这样做:

printf("size is %d", size);

代替。这将打印int对象size的值。

但是

 printf("size is %d", &size);

是未定义的行为。

答案 2 :(得分:0)

您正在打印size的地址,即&size

只需传递普通size

答案 3 :(得分:0)

&语句中的printf移除为&size - >打印地址。

      printf("size is %d", size);

答案 4 :(得分:0)

printf和scanf中的调用约定不同。

Printf的参数通常是按值(no&),但scanf必须有指针。 (安培)
(您不能将新值添加到例如1.0,但您可以打印它......)