首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

int max(int a,int b)默认返回值的有关问题

2013-10-29 
int max(int a,int b)默认返回值的问题本帖最后由 lubyam 于 2013-10-25 17:52:12 编辑使用的是vs2012test

int max(int a,int b)默认返回值的问题
本帖最后由 lubyam 于 2013-10-25 17:52:12 编辑



使用的是vs2012
test.c
int max(int a,int b)
{
    if(a>b)
    {
        return a;
    }
}

-----------

int main(int argc,char *argv[])
{
    int a=2;
    int b=3;
    int c=0;
    c=max(a,b);
    printf("%d",c);
}


为什么输出来的是2而不是0;
[解决办法]
  c=max(a,b);

 00A1403  mov         eax,dword ptr [b]  
 000A1406  push        eax  
 000A1407  mov         ecx,dword ptr [a]  
 000A140A  push        ecx  
 000A140B  call        max (0A1109h)  
 000A1410  add         esp,8  
 000A1413  mov         dword ptr [c],eax 
看到了吗 用俩个参数的时候压栈分别用了eax ecx
你是这样调用的 c=max(2,3);
c默认调用从右向左 这样的话
eax保存的是2
所以你换成
c=max(3,2);
返回值就是3了
专业吧 20分都给我吧 他们 都不专业 哈哈
 

热点排行