C程序if语句不能运行

#include
int main(){
int x,y;
printf("x= ");
scanf("%d",x);
if(x>=0)
{
y=x+25;
printf("y=%d\n",&y);
}
else{
y=x-25;
printf("y=%d\n",&y);
}
}

img

scanf("%d",x);
改为
scanf("%d",&x);
输入的时候,整型变量要取地址才行

printf("y=%d\n",&y);
输出的时候,y不要取地址了

#include <stdio.h>
int main()
{
     int x,y;
     printf("x= ");
     scanf("%d",&x);
     if(x>=0)
     {
         y=x+25;
         printf("y=%d\n",y);
     }
     else
     {
         y=x-25;
         printf("y=%d\n",y);
     }
     return 0;
}

1.有两个大问题,应该基础知识没有掌握, scanf()printf() 格式化输入/输出函数:
2.你看下面的图片,看一下正确的格式:

img


3.看一下修改之后的代码和输出:

#include <stdio.h>
int main()
{
    int x, y;
    printf("x= ");
    scanf("%d", &x);
    if (x >= 0)
    {
        y = x + 25;
        printf("y=%d\n", y);
    }
    else
    {
        y = x - 25;
        printf("y=%d\n", y);
    }
}

输出:

x= 25
y=50

3.如果对C语言有任何问题,都可以私我。。。

你把printf和scanf弄混了吧,&是取地址符,scanf使用取地址符表示将值写入该地址,不使用&表示将写入的值作为该地址。这个地址是一串随机数,可能是十六进制。虽然它不0但是下一句y=x+25将地址和整形相加会出错导致if语句无法正常运行。而printf使用&时表示输出y的地址,但是使用%d输出地址是错误,应该使用占位符%p输出地址。虽然%d也可以输出地址但是一般编译器都会报错。

变量的地址和变量值的关系
在赋值表达式中给变量赋值,如:
a=567;则,a为变量名,567是变量的值,&a是变量a的地址。
但在赋值号左边是变量名,不能写地址,
而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如scanf("%d",&a)。
这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。