LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1080|回复: 1

union结果为什麽不一样

[复制链接]
发表于 2010-2-8 12:39:02 | 显示全部楼层 |阅读模式
a和b是把ip地址转为整数。只是t1,t2,t3,t4的赋值顺序不通。
执行a和b后,输入相同的值,结果缺不通,a是正确的。
输入0.0.1.0结果应为256

vi a.c
union trans {
unsigned int i;
unsigned char c[4];
};
main() {
union trans t;
unsigned char t1,t2,t3,t4;

        scanf("%d.%d.%d.%d",&t4,&t3,&t2,&t1);
        t.c[3]=t4;
        t.c[2]=t3;
        t.c[1]=t2;
        t.c[0]=t1;
        printf("int is %d\n",t.i);
}

vi b.c
union trans {
        unsigned int i;
        unsigned char c[4];
};

main() {
        union trans t;
        unsigned char t1,t2,t3,t4;
        printf("input ip: ");
        
        scanf("%d.%d.%d.%d",&t1,&t2,&t3,&t4);
        t.c[3]=t4;              
        t.c[2]=t3;
        t.c[1]=t2;      
        t.c[0]=t1;
  
        printf("int is %d\n",t.i);
}      
发表于 2010-2-9 11:41:20 | 显示全部楼层
如果赋值顺序不同结果依然相同,这样的语言还敢用吗?
将字符串的ip地址转换为用一个无符号整型表示的ip地址有现成函数的,inet_addr,非要自己实现的话,可以参考下它
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表