| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 280 人关注过本帖
标题:函数的调用问题。
只看楼主 加入收藏
魔人布欧
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-8-29
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:1 
函数的调用问题。
今天看了一段程序是一个函数如下:
int WHS(short int *data)
{
        int temp;
        temp=0;
        temp+=(data[3]/16)*16*16*16*16*16*16*16;
        temp+=(data[3]%16)*16*16*16*16*16*16;
        temp+=(data[2]/16)*16*16*16*16*16;
        temp+=(data[2]%16)*16*16*16*16;
        temp+=(data[1]/16)*16*16*16;
        temp+=(data[1]%16)*16*16;
        temp+=data[0];
        return temp;
}
然后就调用了一下,如pl=WHS(&ph[2]);
        printf("pl=%d\t",pl);
        jl=WHS(&ph[18]);
        printf("jl=%d\t",jl);
        il=WHS(&ph[22]);
        printf("il=%d\n",il);
我想知道这个调用的结果代表什么,这个实现什么样的功能,谢谢各位的帮助。
搜索更多相关主题的帖子: return 
2015-11-04 10:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
自己写个代码测试一下嘛(虽然你也说了“然后就调用了一下,如……”,但根本没听懂你在干什么)
程序代码:
int WHS(short int *data)
{
    int temp;
    temp=0;
    temp+=(data[3]/16)*16*16*16*16*16*16*16;
    temp+=(data[3]%16)*16*16*16*16*16*16;
    temp+=(data[2]/16)*16*16*16*16*16;
    temp+=(data[2]%16)*16*16*16*16;
    temp+=(data[1]/16)*16*16*16;
    temp+=(data[1]%16)*16*16;
    temp+=data[0];
    return temp;
}

#include <stdio.h>

int main( void )
{
    {
        short data[4] = { 0x01, 0x23, 0x45, 0x67 };
        int temp = WHS( data );
        printf( "%X\n", temp );
    }

    {
        short data[4] = { 0x0123, 0x4567, 0x89AB, 0xCDEF };
        int temp = WHS( data );
        printf( "%X\n", temp );
    }

    return 0;
}
输出为
67452301
78F06823
可见,就是将 { 0x01, 0x23, 0x45, 0x67 } 拼接成 0x67452301
但对于 { 0x0123, 0x4567, 0x89AB, 0xCDEF } 的拼接结果,就它妈的乱套了,也不知道这个WHS函数是哪个傻逼写的

程序代码:
int WHS( const void* data )
{
    int temp = 0;
    for( size_t i=0; i!=sizeof(temp); ++i )
        temp |= ((const unsigned char*)data)[i] << (i*8);
    return temp;
}

#include <stdio.h>

int main( void )
{
    char data[4] = { 0x01, 0x23, 0x45, 0x67 };
    int temp = WHS( data );
    printf( "%08X\n", temp );

    return 0;
}





2015-11-04 12:06
快速回复:函数的调用问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016775 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved