一道C++选择题求分析,答案是C1 (单选)此函数实现把32位IP地址(网络序)以字符串的方式打印出来: char *IpAddr2Str(unsigned long ulIpAddr) { char szIpAddr[32]; unsigned long ulLocIpAddr = ntohl(ulIpAddr);//把网络序转话为主机序 (void)VOS_sprintf(szIpAddr, %d.%d.%d.%d, ulLocIpAddr >> 24, (ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr & 0xff); return szIpAddr; } 下面描述正确的是( ): (2分) A : 数组szIpAddr空间不够; B : 输出的IP地址次序颠倒; C : 函数返回局部数组szIpAddr变量地址; D : 以上都不正确 话说0xff换成二进制是什么,8个1么.关于
网友回答
【答案】 说的很对:0xff是8个1
那个地方是将移位运算的结果 和 8个1进行 位与& 运算,这样就可以保证比8位高的地方全部置成0,而最后8位保持不变.