为什么此代码不会置换值Z?

时间:2016-08-24 00:37:01

标签: linux c

所以我试图在C中构建一个简单的程序来置换zz等于x + y)的值,但我尝试不同的每一件事都不起作用。这里真的很沮丧。请帮我理解。

来源:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x, y, z;
    scanf("%d", &x);
    scanf("%d", &y);
    z = x + y;
    printf("%d", &z);
    return 0;
}

1 个答案:

答案 0 :(得分:5)

您正在打印z的地址,而不是存储的值,因为您将printf指针传递给z而不是值。将printf行更改为:

printf("%d", z);

scanf已经返回成功值,因此必须使用其他方式为您提供输入。您传递的参数(&x)是指向要用于存储的变量的指针。这就是&符号的用途。它说“使用这个变量的地址”。

另一方面,

printf只是想要自己的价值观。它不需要地址。 (虽然从技术上讲,字符串会作为指针传入。可能不是你现在需要担心的区别。)