我想声明一个具有4个整数的结构,它们中的每一个只能是0到255之间。有没有办法呢?目前,我正在通过检查输入(在输入函数中)来做到这一点。范围从0到255的整数
struct
{
int num1;
int num2;
int num3;
int num4;
} ip;
我想声明一个具有4个整数的结构,它们中的每一个只能是0到255之间。有没有办法呢?目前,我正在通过检查输入(在输入函数中)来做到这一点。范围从0到255的整数
struct
{
int num1;
int num2;
int num3;
int num4;
} ip;
是的,你可以使用位域类型是:
struct ip
{
unsigned num1 : 8;
unsigned num2 : 8;
unsigned num3 : 8;
unsigned num4 : 8;
};
谢谢。我如何为Java做同样的事情? –
我不确定在Java中这样做的惯用方式 - 可能是一个将提供的数字限制在所需范围内的setter函数? – caf
@NguyễnDuy:如果你非常关心java,那么你为什么用C来问这个问题呢? –
好了,你可以使用unsigned char
(或更好,uint8_t
),但是,这并不意味着你可以停止检查输入。这取决于你的要求。如果我输入256
会发生什么情况?溢出可以吗?
附注中,sizeof(char)
定义为1,但一个字节未定义为8位。在大多数硬件上,你会好起来的,但是出于这个原因你最好用uint8_t
。
我可以直接存储一个整数值吗?例如: blablabla-> num1 = 1; 工作会吗? –
@NguyễnDuy是的。但作为EdS。说,你需要考虑如何blablabla-> num = 256;应该被处理,特别是如果256来自输入。 – nos
是的,我明白了。但问题的侧面。我怎样才能在Java中做同样的事情?因为我不认为Java让你声明一个无符号的字符,是吗? –
请与您所使用的语言标记这并分享相关的代码。 – Tim
我知道了nvm。哈哈 –
@StephenC:在C中没有“字节”类型 –