#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);
}
}
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.你看下面的图片,看一下正确的格式:
#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是一个表达式,其功能是求变量的地址。