计算广播地址时的数字错误

1 c c++ mask broadcast subnet

我在使用IP地址和子网掩码计算广播地址时遇到了麻烦.看起来很简单,应该只是广播= ip |〜mask,但它并不适合我的情况.我尝试使用+而不是OR运算符并使用unsigned int而不是signed,但它仍然不起作用.以下是执行此操作的代码部分,希望您能帮助我.作为IP地址和掩码[]的数组net []是以前在程序中使用的整数,并且正确输出并在我的程序内的其他操作中正常工作(将它们转换为二进制,通过使用&之间的计算网络地址等.)

int broadcast[4];    
   for(int i=0;i<4;i++) 
     broadcast[i]=net[i]|(~mask[i]);
Run Code Online (Sandbox Code Playgroud)

对于192.168.50.50和255.255.0.0作为net []和mask []我期望广播为192.168.255.255,但我得到-64.-88.-1.-1

dbu*_*ush 5

您看到的输出是因为您使用了有符号值并将结果打印为有符号值.

更改值的类型unsigned char和打印%hhu.