这个程序为什么编译之后是这样的???
#include <stdio.h>#include <stdlib.h>
int main()
{
int a,b;
printf("请输入第一个数:");
scanf("%d%d",&a,&b);
if (a!=b)
{
if (a>b)
printf("%d>%d\n",&a,&b);
if (a<b)
printf("%d<%d\n",&a,&b);}
else
printf("%d=%d\n",&a,&b);
return 0;
}
请输入第一个数:5
5
6356732=6356728 printf("%d>%d\n",&a,&b);
printf("%d<%d\n",&a,&b);}
printf("%d=%d\n",&a,&b);
去掉所有红色的 & 很显然,你把scanf和printf搞混了
&是取地址操作符,你这不就是把a和b的地址打印出来吗,所以应去掉printf的&
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
printf("请输入第一个数:");
scanf("%d%d",&a,&b);
if (a!=b)
{
if (a>b)
printf("%d>%d\n",a,b);
if (a<b)
printf("%d<%d\n",a,b);}
else
printf("%d=%d\n",a,b);
return 0;
} 楼上正确,因为&是取地址符,你打印一个地址,肯定打印出奇怪的东西呀 打印函数不需要取地址符“&”,别把“scanf”和“printf”弄混了,scanf是需要取地址符,printf是不需要取地址符,“&”这是取地址符后面还会学习这个。
打印的时候不需要&
页:
[1]