2013-12-09 61 views
0

我想声明一个具有4个整数的结构,它们中的每一个只能是0到255之间。有没有办法呢?目前,我正在通过检查输入(在输入函数中)来做到这一点。范围从0到255的整数

struct 
{ 
    int num1; 
    int num2; 
    int num3; 
    int num4; 
} ip; 
+0

请与您所使用的语言标记这并分享相关的代码。 – Tim

+0

我知道了nvm。哈哈 –

+0

@StephenC:在C中没有“字节”类型 –

回答

0

是的,你可以使用位域类型是:

struct ip 
{ 
    unsigned num1 : 8; 
    unsigned num2 : 8; 
    unsigned num3 : 8; 
    unsigned num4 : 8; 
}; 
+0

谢谢。我如何为Java做同样的事情? –

+0

我不确定在Java中这样做的惯用方式 - 可能是一个将提供的数字限制在所需范围内的setter函数? – caf

+1

@NguyễnDuy:如果你非常关心java,那么你为什么用C来问这个问题呢? –

4

好了,你可以使用unsigned char(或更好,uint8_t),但是,这并不意味着你可以停止检查输入。这取决于你的要求。如果我输入256会发生什么情况?溢出可以吗?

附注中,sizeof(char)定义为1,但一个字节未定义为8位。在大多数硬件上,你会好起来的,但是出于这个原因你最好用uint8_t

+0

我可以直接存储一个整数值吗?例如: blablabla-> num1 = 1; 工作会吗? –

+0

@NguyễnDuy是的。但作为EdS。说,你需要考虑如何blablabla-> num = 256;应该被处理,特别是如果256来自输入。 – nos

+0

是的,我明白了。但问题的侧面。我怎样才能在Java中做同样的事情?因为我不认为Java让你声明一个无符号的字符,是吗? –