比较两个数是否相等

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:11:52
# include <stdio.h>
void main()
{
int x,y;
int xd(int x,int y);
scanf("%d%d",&x,&y);
if(xd(x,y))
printf("x==y\n");
else
printf("x!=y\n");
}

int xd(int x,int y)
{

if(x==y) return 1;
else return 0;
}

迷了。。。return的返回值被谁接受了。。。

如果返回1,则等价于if(1),执行printf("x==y\n");
如果返回0,则等价于if(0),执行printf("x!=y\n");

f(xd(x,y))
printf("x==y\n");
else
printf("x!=y\n");
}
就是这句话

return返回的值返回到F()里面

我猜你是在输入x和y的值时弄错了
你的这句“scanf("%d%d",&x,&y);”%d和%d是连续的,那么你在输入x和y的时候就要用空格分开而不能用逗号或其它符号,那样得到的x和y值并不是你想输入的值,所以当你输入“5,5”时它仍然会输出“x!=y”。
如果你想用逗号来分隔你输入的两个值,那么你就要在%d和%d之间加一个逗号,也就是这样:“scanf("%d,%d",&x,&y);”,就可以了。

函数有一个储存真值的地址,就放在那了

返回值不一定要被谁接受,比如有点编译器是根据EAX来返回返回值的,所以这里只用判断EAX是否为0就可以了。 这是VC7编译的汇编代码片断:
void main()
{
00411240 push ebp
00411241 mov ebp,esp
00411243 sub esp,0D8h
00411249 push ebx
0041124A push esi
0041124B push edi
0041124C lea edi,[ebp-0D8h]
00411252 mov ecx,36h
00411257 mov eax,0CCCCCCCCh
0041125C rep stos dword ptr [edi]